Essai d'apprentissage PyQt (Python + Qt): la fonction QPlainTextEdit de l'éditeur de texte brut

1. Présentation

QPlainTextEdit est un composant d'éditeur de documents avancé pour le texte brut, avec des optimisations spécifiques pour prendre en charge le traitement de documents volumineux et une réponse rapide aux entrées de l'utilisateur. QPlainTextEdit traite le texte par paragraphes et caractères. Le paragraphe est une chaîne formatée. Les sauts de ligne sur l'interface seront effectués en unités de mots entiers en fonction de la largeur du composant d'édition. Par défaut, un saut de ligne en texte brut représente un paragraphe. Le document comprend zéro ou plusieurs paragraphes. Chaque caractère d'un paragraphe a ses propres attributs, tels que la police et la couleur.

Le traitement de texte de PyQt fournit une série de classes riches, y compris QTextDocument, QTextCharFormat, QTextCursor, QTextBlock, QTextList, QTextFrame, QTextTable, QTextBlockFormat, QTextListFormat, QTextFrameFormat, QTextTable vous souhaitez plus Ne développez pas pour introduire. Il est recommandé de suivre les deux articles ci-dessous:

2. Propriétés

Les propriétés de QPlainTextEdit dans Designer peuvent être définies comme suit:
Insérez la description de l'image ici
Vous pouvez voir que les propriétés de QPlainTextEdit et de nombreux QTextEdit sont les mêmes.

  • tabChangesFocus: la propriété tabChangesFocus contrôle si la touche de tabulation change de focus ou est acceptée en entrée. Dans certains cas, la modification de texte ne doit pas permettre aux utilisateurs d'utiliser la touche Tab pour entrer des onglets ou modifier l'indentation, car cela cassera la chaîne de focus, la valeur par défaut est False et est accessible via les méthodes tabChangesFocus () et setTabChangesFocus ()
  • documentTitle: l'attribut documentTitle contient le titre du document. Par défaut, pour les documents vides nouvellement créés, cette propriété contient une chaîne vide. Accessible via les méthodes documentTitle (), setDocumentTitle ().
  • undoRedoEnabled: la propriété undoRedoEnabled est utilisée pour contrôler si les opérations d'annulation et de rétablissement sont activées. Elle est activée par défaut et est accessible via les méthodes isUndoRedoEnabled (), setUndoRedoEnabled ()
  • lineWrapMode: la propriété lineWrapMode est utilisée pour contrôler le mode de saut de ligne. Son type est le type énuméré QPlainTextEdit.LineWrapMode. La valeur par défaut est WidgetWidth, ce qui signifie que le saut de ligne sur le côté droit de l'éditeur en unités de mots. Le saut de ligne apparaît dans un espace vide pour maintenir l'intégrité du mot entier. Vous pouvez appeler les méthodes lineWrapMode (), setLineWrapMode () pour accéder à cette propriété. Si vous n'utilisez pas word comme unité pour encapsuler, vous devez appeler setWordWrapMode pour modifier la stratégie d'habillage des mots. Si le mode de saut de ligne est défini sur NoWrap, aucun saut de ligne ne se produit.
  • readOnly: readOnly est utilisé pour contrôler si l'éditeur est en lecture seule, la valeur par défaut est False, est accessible via isReadOnly (), setReadOnly ()
  • plainText: l'attribut plainText est le contenu textuel de l'éditeur, accessible via les méthodes toPlainText () et setPlainText (). Lorsque le contenu textuel est modifié via setPlainText, le signal textChanged () est également déclenché
  • overwriteMode: l'attribut overwriteMode est utilisé pour contrôler si le texte saisi par l'utilisateur remplace le texte existant. Si la valeur est True, le caractère saisi remplace le caractère actuel un par un à partir de la position actuelle du curseur. Si la valeur est False, le caractère saisi est inséré au niveau du curseur. La valeur par défaut est False, accessible via les méthodes overwriteMode (), setOverwriteMode ()
  • tabStopWidth: La propriété tabStopWidth est utilisée pour contrôler le nombre de pixels déplacés lorsque la touche de tabulation est entrée dans l'éditeur. La valeur par défaut est 80 pixels, accessible via les méthodes tabStopWidth () et setTabStopWidth (), mais cette propriété est la suivante dans Qt 5.10 et versions ultérieures. Remplacée par tabStopDistance, il n'y a pas une telle propriété dans le document 5.13, mais en fait, la méthode de classe est toujours prise en charge. La seule différence entre tabStopWidth et tabStopDistance est que le premier est un entier et le second un nombre à virgule flottante, ce qui est plus précis. La valeur est également liée. Le changement de tabStopWidth change directement la valeur de tabStopDistance en tabStopWidth. Si la valeur de tabStopDistance change, la valeur arrondie de tabStopDistance est utilisée comme valeur de tabStopWidth. Les codes résultants tabStopDistance et tabStopWidth seront définis, ce qui est différent de QTextEdit
  • cursorWidth: cursorWidth est utilisé pour définir la largeur du pixel du curseur de l'éditeur, la valeur par défaut est 1, accessible via les méthodes cursorWidth (), setCursorWidth ()
  • textInteractionFlags: la propriété textInteractionFlags est utilisée pour contrôler la façon dont l'éditeur répond aux entrées de l'utilisateur. Son type est Qt.TextInteractionFlags, qui est utilisé pour contrôler si l'éditeur peut sélectionner du texte au clavier ou à la souris, s'il peut être modifié, si le lien est accessible par la souris ou le clavier, etc. La valeur par défaut Selon que l'éditeur est en lecture seule, il est accessible via les méthodes textInteractionFlags () et setTextInteractionFlags (). Pour les valeurs de type d'énumération spécifiques, reportez-vous à la documentation officielle
  • maximumBlockCount: la propriété maximumBlockCount est utilisée pour contrôler le nombre maximal de blocs de document dans l'éditeur. Si le nombre de blocs de document dépasse la valeur lorsque la valeur de cette propriété est définie, le nombre excessif de blocs sera supprimé au début du document. Si la valeur est 0 ou un nombre négatif signifie que le nombre de blocs du document n'est pas limité, la valeur par défaut est 0, la valeur de cette propriété est accessible via les méthodes maximumBlockCount (), setMaximumBlockCount ()
    Remarque : Le bloc est l'unité du fichier de traitement de texte, un document Il se compose d'une série de blocs, qui sont représentés par des objets QTextBlock. QTextBlockFormat est utilisé pour contrôler les informations caractéristiques de formatage des blocs. Le type de blocs peut être des segments de texte, des tableaux, des listes, des images, etc.
  • backgroundVisible: la propriété backgroundVisible est utilisée pour contrôler si la palette d'arrière-plan est visible en dehors du document. Si elle est définie sur True, la partie de la fenêtre de l'éditeur qui n'est pas couverte par du texte utilisera également la palette pour dessiner l'arrière-plan ou non. Cette fonctionnalité permet aux utilisateurs de distinguer intuitivement les zones de document dessinées à l'aide des couleurs primaires de la palette et toutes les zones vides non couvertes par le document. Comme indiqué:
    Insérez la description de l'image ici
  • centerOnScroll: La propriété centerOnScroll conserve si le curseur doit être centré sur l'écran. Si la valeur est True, l'édition de texte brut fera défiler le document verticalement de sorte que le curseur soit visible au centre de la fenêtre. Cela permet également à l'édition de texte de défiler sous la fin du document. Sinon, s'il est défini sur False, l'édition de texte brut défilera le moins possible pour garantir que le curseur est visible. La valeur par défaut est False, accessible via les méthodes centerOnScroll (), setCenterOnScroll ()
  • placeholderText: placeholderText est un espace réservé pour l'éditeur. Lorsqu'il n'y a pas de texte dans l'éditeur, il est affiché en gris dans l'éditeur. Une fois le caractère saisi automatiquement effacé, il est accessible via les méthodes placeholderText (), setPlaceholderText ()

Trois méthodes importantes

Les méthodes complexes suivantes introduiront la grammaire appelante et les méthodes simples ne présenteront pas la grammaire appelante. Vous pouvez consulter la documentation officielle:

  • Méthode appendHtml (): méthode slot, utilisée pour ajouter une section de texte html à la fin de l'éditeur. Bien que QPlainTextEdit soit un éditeur de texte brut, il peut également analyser les paquets html. Après avoir ajouté des paquets html à l'aide de la méthode appendHtml, le contenu analysé est affiché sur l'interface
Cas:

Utilisez appendHtml et appendPlainText pour ajouter le même message html

  html = '''<link  href="https://blog.csdn.net/LaoYuanPython"/><title>老猿Python</title><div>老猿Python网址:https://blog.csdn.net/LaoYuanPython</div>'''
  self.plainTextEdit.appendHtml(html)
  self.plainTextEdit.appendPlainText('\n************************************************\n')
  self.plainTextEdit.appendPlainText(html)

L'effet d'affichage de l'interface après l'exécution est le suivant:
Insérez la description de l'image ici

  • appendPlainText (): méthode slot, utilisée pour ajouter une section de texte brut à la fin de l'éditeur
  • méthode blockCount (): utilisée pour obtenir le nombre de blocs dans le document, le nombre de blocs dans le document vide est 1
  • Méthode canPaste (): utilisée pour indiquer si vous pouvez coller du texte du presse-papiers dans l'éditeur
  • Méthode clear (): méthode slot, effacer tout le texte dans l'éditeur, l'historique de refaire / annuler sera également effacé
  • méthode copy (): méthode slot, utilisée pour copier le texte sélectionné dans l'éditeur dans le presse-papiers
  • méthode cut (): méthode slot, utilisée pour copier le texte sélectionné dans l'éditeur dans le presse-papiers et le supprimer
  • Méthode createStandardContextMenu ():
    cette méthode est utilisée pour créer le menu contextuel affiché lorsque le bouton droit de la souris est utilisé dans l'éditeur, mais il existe deux méthodes d'appel avec et sans paramètres, et le paramètre apparaît à la position spécifiée dans le document. De cette façon, différents menus de raccourcis apparaîtront dans différentes positions de l'éditeur. Syntaxe d'appel:createStandardContextMenu()、createStandardContextMenu(QPoint position)
  • La méthode currentCharFormat (): renvoie le format de caractère actuel, dont le type est QTextCharFormat, et QTextCharFormat est utilisé pour contrôler le format de texte dans QTextEdit (le type de stockage de ces textes est des objets QTextDocument, qui peuvent être obtenus via la méthode QTextEdit document ()). Non détaillé dans cet article), ces informations de contrôle de format de texte sont utilisées pour spécifier un format visuel du texte, tout comme les informations de contrôle de format visuel en hypertexte
  • La méthode cursorForPosition (): renvoie l'objet curseur texte QTextCursor à la position spécifiée. Le curseur texte QTextCursor est une interface de programmation qui simule le comportement du curseur dans l'éditeur de texte. Il est utilisé pour accéder et modifier le contenu du document texte et l'objet de la structure sous-jacente. QTextCursor contient des informations sur la position du curseur dans QTextDocument et tous les choix qu'il fait. QTextCursor est modélisé en fonction du comportement du curseur de texte dans un éditeur de texte. Il fournit une méthode de programmation pour effectuer des opérations standard via l'interface utilisateur.
  • méthode document (): la méthode document renvoie l'objet de gestion de document QTextDocument dont dépend l'éditeur de texte, à travers lequel le texte peut être enrichi, et l'objet document de l'éditeur de texte peut être modifié en appelant la méthode setDocument
  • Méthode EnsureCursorVisible (): utilisez cette méthode pour vous assurer que le curseur dans l'éditeur est visible et vous pouvez faire défiler le texte s'il n'est pas actuellement visible
  • Méthode find (): recherchez la chaîne spécifiée dans l'éditeur, appelez la syntaxe:
  • bool find (str exp, QTextDocument.FindFlags options =
    QTextDocument.FindFlags ())
  • bool find (QRegExp exp, QTextDocument.FindFlags options =
    QTextDocument.FindFlags ())

L'exp peut être une chaîne régulière ou une expression régulière du type QRegExp, où les options sont utilisées pour spécifier si la recherche doit être effectuée vers l'avant ou vers l'arrière, si elle doit correspondre à la casse ou au mot entier lors de la recherche, veuillez vous référer à la documentation officielle pour les valeurs spécifiques . Lorsque exp est une expression régulière, l'option permettant de faire correspondre la casse est ignorée, mais l'expression régulière contrôle s'il faut faire correspondre la casse

  • Méthode insertPlainText (): insère le texte donné par le paramètre dans la position actuelle
  • Méthode moveCursor (): contrôle le mouvement du curseur dans l'éditeur, syntaxe d'appel :, moveCursor(operation, mode = QTextCursor.MoveAnchor)où operation est le type d'énumération QTextCursor.MoveOperation, utilisé pour contrôler la méthode de déplacement du curseur, comme le déplacement vers le début du document, le déplacement vers le début de la ligne, etc., des valeurs spécifiques Reportez-vous à la documentation officielle, le mode est le type d'énumération QTextCursor.MoveMode, pour les valeurs spécifiques, reportez-vous à la documentation officielle
  • méthode paste (): coller est la méthode du slot, copiez le texte du presse-papiers à la position actuelle
  • méthodes redo () et undo (): undo et redo sont des méthodes de slot. Une fois la méthode undo () exécutée, vous pouvez utiliser redo pour réexécuter la dernière opération
  • Méthode selectAll (): selectAll est une méthode de slot pour sélectionner tout le texte
  • Méthode setCurrentCharFormat (): définir les informations de contrôle du format texte, syntaxe d'appel:setCurrentCharFormat(QTextCharFormat format)
  • La méthode setTextCursor (): La méthode setTextCursor est utilisée pour définir l'objet curseur actuellement visible. La syntaxe d'appel:, L' setTextCursor(QTextCursor cursor)objet curseur actuel peut être obtenu par la méthode textCursor ()
  • méthodes zoomIn (), zoomOut (): les deux sont des méthodes de slot, agrandissent ou réduisent la taille de la taille du paramètre de police de texte spécifié, la taille de police de base peut être définie par setFontPointSize

Quatrièmement, le signal

  • blockCountChanged (int newBlockCount): Ce signal est émis lorsque le nombre de blocs dans le texte change, le paramètre est le dernier numéro de bloc
  • copyAvailable (bool yes): ce signal est émis lorsque le texte est sélectionné ou désélectionné, indiquant s'il peut être copié, oui est vrai pour la sélection, faux lorsqu'il est désélectionné
  • cursorPositionChanged (): émet ce signal lorsque la position du curseur change
  • modificationChanged (bool changé): Ce signal est émis lorsque le contenu du document change (y compris le contenu du document provoqué par les opérations d'annulation et de rétablissement)
  • redoAvailable (bool available): Ce signal est émis lorsque l'état de redo change
  • : selectionChanged (): émet ce signal lorsque le texte sélectionné change
  • textChanged (): émet ce signal lorsque le contenu du texte change
  • undoAvailable (bool available): ce signal est émis lorsque l'état d'annulation change
  • updateRequest (QRect rect, int dy): Ce signal est envoyé lorsque le document texte doit mettre à jour la zone rect spécifiée. Si le texte défile, rect couvrira toute la fenêtre. Si le texte défile verticalement, dy porte les pixels de la fenêtre défilée. Le but de ce signal est de prendre en charge des composants supplémentaires dans la sous-classe d'édition de texte brut, tels que l'affichage des numéros de ligne, des points d'arrêt ou d'autres informations supplémentaires.

V. Résumé

De nombreuses fonctions de QPlainTextEdit prennent en charge la même technologie que QTextEdit. Comme QTextEdit, les objets texte dans QPlainTextEdit dépendent de la classe QTextDocument pour la gestion. La classe QTextDocument peut effectuer des opérations riches sur du texte à l'aide de QTextCursor. Cependant, en raison du temps et de l'espace limités, cet article n'introduit pas QTextDocument et QTextCursor en détail. Vous pouvez vous référer aux documents de référence ou aux documents officiels du site Web fournis par l'ancien singe dans la section Aperçu.

Old Ape Python, apprenez le Python de Old Ape!

Publié 779 articles originaux · loué 3478 · 430 000 vues +

Je suppose que tu aimes

Origine blog.csdn.net/LaoYuanPython/article/details/105610233
conseillé
Classement