Ensayo de aprendizaje PyQt (Python + Qt): la función QPlainTextEdit del editor de texto sin formato

1. Descripción general

QPlainTextEdit es un componente de editor de documentos avanzado para texto plano, con optimizaciones específicas para admitir el procesamiento de documentos grandes y una respuesta rápida a la entrada del usuario. QPlainTextEdit procesa texto por párrafos y caracteres. El párrafo es una cadena formateada. Los saltos de línea en la interfaz se llevarán a cabo en unidades de palabras enteras de acuerdo con el ancho del componente de edición. Por defecto, un salto de línea en texto plano representa un párrafo. El documento consta de cero o más párrafos. Cada carácter en un párrafo tiene sus propios atributos, como la fuente y el color.

El procesamiento de texto de PyQt proporciona una serie de clases ricas, que incluyen QTextDocument, QTextCharFormat, QTextCursor, QTextBlock, QTextList, QTextFrame, QTextTable, QTextBlockFormat, QTextListFormat, QTextFrameFormat, QTextTableFormat claramente, así que necesita más tiempo, etc. No se expanda para presentar. Se recomienda que siga los dos artículos a continuación:

2. Propiedades

Las propiedades de QPlainTextEdit en Designer se pueden establecer de la siguiente manera:
Inserte la descripción de la imagen aquí
Puede ver que las propiedades de QPlainTextEdit y muchas de QTextEdit son las mismas.

  • tabChangesFocus: la propiedad tabChangesFocus controla si la tecla tab cambia el foco o si se acepta como entrada. En algunos casos, la edición de texto no debe permitir a los usuarios usar la tecla Tab para ingresar pestañas o cambiar la sangría, porque esto romperá la cadena de enfoque, el valor predeterminado es False, y se puede acceder a él a través de los métodos tabChangesFocus () y setTabChangesFocus ()
  • documentTitle: el atributo documentTitle contiene el título del documento. De forma predeterminada, para documentos vacíos recién creados, esta propiedad contiene una cadena vacía. Se puede acceder a través de los métodos documentTitle (), setDocumentTitle ().
  • undoRedoEnabled: la propiedad undoRedoEnabled se usa para controlar si deshacer y rehacer están habilitados. Está habilitado de forma predeterminada, y se puede acceder a través de los métodos isUndoRedoEnabled (), setUndoRedoEnabled ()
  • lineWrapMode: la propiedad lineWrapMode se usa para controlar el modo de salto de línea. Su tipo es el tipo enumerado QPlainTextEdit.LineWrapMode. El valor predeterminado es WidgetWidth, lo que significa que el salto de línea en el lado derecho del editor en unidades de palabras. El salto de línea aparece en un espacio en blanco para mantener la integridad de la palabra completa. Puede llamar a los métodos lineWrapMode (), setLineWrapMode () para acceder a esta propiedad. Si no utiliza word como unidad para ajustar, debe llamar a setWordWrapMode para cambiar la estrategia de ajuste de palabras. Si el modo de salto de línea se establece en NoWrap, no se producirán saltos de línea.
  • readOnly: readOnly se usa para controlar si el editor es de solo lectura, el valor predeterminado es False, se puede acceder a través de isReadOnly (), setReadOnly ()
  • plainText: el atributo plainText es el contenido de texto en el editor, al que se puede acceder a través de los métodos toPlainText () y setPlainText (). Cuando el contenido de texto se cambia a través de setPlainText, la señal textChanged () también se activa
  • overwriteMode: el atributo overwriteMode se usa para controlar si el texto de entrada del usuario reemplaza el texto existente. Si es verdadero, el carácter de entrada reemplaza el carácter actual uno por uno a partir de la posición actual del cursor. Si es falso, el carácter de entrada se inserta en el cursor. El valor predeterminado es False, al que se puede acceder a través de los métodos overwriteMode (), setOverwriteMode ()
  • tabStopWidth: la propiedad tabStopWidth se usa para controlar el número de píxeles movidos cuando se ingresa la tecla tab en el editor. El valor predeterminado es 80 píxeles, a los que se puede acceder a través de los métodos tabStopWidth () y setTabStopWidth (), pero esta propiedad es la siguiente en Qt 5.10 y versiones posteriores. Reemplazado por tabStopDistance, no existe tal propiedad en el documento 5.13, pero de hecho, el método de clase todavía es compatible. La única diferencia entre tabStopWidth y tabStopDistance es que el primero es un número entero y el segundo es un número de coma flotante, que es más preciso. El valor también está vinculado. El cambio de tabStopWidth cambia directamente el valor de tabStopDistance a tabStopWidth. Si el valor de tabStopDistance cambia, el valor redondeado de tabStopDistance se utiliza como el valor de tabStopDistance. Los códigos resultantes tabStopDistance y tabStopWidth se establecerán, que es diferente de QTextEdit
  • cursorWidth: cursorWidth se usa para establecer el ancho del píxel del cursor del editor, el valor predeterminado es 1, se puede acceder a través de los métodos cursorWidth (), setCursorWidth ()
  • textInteractionFlags: la propiedad textInteractionFlags se usa para controlar cómo responde el editor a la entrada del usuario. Su tipo es Qt.TextInteractionFlags, que se usa para controlar si el editor puede seleccionar texto con el teclado o el mouse, si se puede editar, si se puede acceder al enlace con el mouse o el teclado, etc. El valor predeterminado Dependiendo de si el editor es de solo lectura, se puede acceder a él a través de los métodos textInteractionFlags () y setTextInteractionFlags (). Para obtener valores de tipo de enumeración específicos, consulte la documentación oficial
  • maximumBlockCount: la propiedad maximumBlockCount se utiliza para controlar el número máximo de bloques de documentos en el editor. Si el número de bloques de documentos excede el valor cuando se establece el valor de esta propiedad, el número de bloques en exceso se eliminará desde el principio del documento. Si el valor es 0 o un número negativo significa que el número de bloques del documento no está limitado, el valor predeterminado es 0, se puede acceder al valor de esta propiedad a través de los métodos maximumBlockCount (), setMaximumBlockCount ()
    Nota : El bloque es la unidad del archivo de procesamiento de texto, un documento Consiste en una serie de bloques, que están representados por objetos QTextBlock. QTextBlockFormat se usa para controlar la información característica de formato de los bloques. El tipo de bloques puede ser segmentos de texto, tablas, listas, imágenes, etc.
  • backgroundVisible: la propiedad backgroundVisible se usa para controlar si la paleta de fondo es visible fuera del documento. Si se establece en True, la parte de la vista del editor que no está cubierta por texto también usará la paleta para dibujar el fondo o no para dibujar. Esta característica permite a los usuarios distinguir intuitivamente entre las áreas del documento dibujadas con los colores primarios de la paleta y las áreas en blanco no cubiertas por el documento. Como se muestra:
    Inserte la descripción de la imagen aquí
  • centerOnScroll: la propiedad centerOnScroll mantiene si el cursor debe estar centrado en la pantalla. Si se establece en Verdadero, la edición de texto sin formato desplazará el documento verticalmente para que el cursor sea visible en el centro de la ventana gráfica. Esto también permite que la edición de texto se desplace debajo del final del documento. De lo contrario, si se establece en False, la edición de texto sin formato se desplazará lo menos posible para garantizar que el cursor sea visible. El valor predeterminado es False, al que se puede acceder a través de los métodos centerOnScroll (), setCenterOnScroll ()
  • placeholderText: placeholderText es un marcador de posición para el editor. Cuando no hay texto en el editor, se muestra en gris en el editor. Una vez que el carácter de entrada se borra automáticamente, se puede acceder a él a través de los métodos placeholderText (), setPlaceholderText ()

Tres métodos importantes.

Los siguientes métodos complejos presentarán la gramática de llamadas, y los métodos sin complicaciones no introducirán la gramática de llamadas. Puede consultar la documentación oficial:

  • Método appendHtml (): método de ranura, usado para agregar una sección de texto html al final del editor. Aunque QPlainTextEdit es un editor de texto plano, también puede analizar mensajes html. Después de agregar el mensaje html utilizando el método appendHtml, el contenido analizado se muestra en la interfaz.
Caso:

Use appendHtml y appendPlainText para agregar el mismo mensaje 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)

El efecto de visualización de la interfaz después de la ejecución es el siguiente:
Inserte la descripción de la imagen aquí

  • appendPlainText (): método de ranura, utilizado para agregar una sección de texto sin formato al final del editor
  • Método blockCount (): utilizado para obtener el número de bloques en el documento, el número de bloques en el documento vacío es 1
  • Método canPaste (): se utiliza para devolver si puede pegar texto del portapapeles en el editor
  • método clear (): método de ranura, borra todo el texto en el editor, el historial de rehacer / deshacer también se borrará
  • método copy (): método de ranura, utilizado para copiar el texto seleccionado en el editor al portapapeles
  • método cut (): método de ranura, utilizado para copiar el texto seleccionado en el editor al portapapeles y eliminarlo
  • Método createStandardContextMenu ():
    este método se utiliza para crear el menú emergente que se muestra cuando se usa el botón derecho del mouse en el editor, pero hay dos métodos de llamada con y sin parámetros, y el parámetro aparece en la posición especificada en el documento. De esta manera, aparecerán diferentes menús contextuales en diferentes posiciones del editor. Sintaxis de llamada:createStandardContextMenu()、createStandardContextMenu(QPoint position)
  • El método currentCharFormat (): devuelve el formato de caracteres actual, cuyo tipo es QTextCharFormat, y QTextCharFormat se usa para controlar el formato de texto en QTextEdit (el tipo de almacenamiento de estos textos es objetos QTextDocument, que se pueden obtener a través del método QTextEdit document (). No detallado en este artículo), esta información de control de formato de texto se utiliza para especificar algún formato visual del texto, al igual que la información de control de formato visual en hipertexto
  • El método cursorForPosition (): devuelve el objeto del cursor de texto QTextCursor en la posición especificada. El cursor de texto QTextCursor es una interfaz de programación que simula el comportamiento del cursor en el editor de texto. Se utiliza para acceder y modificar el contenido del documento de texto y el objeto de la estructura subyacente. QTextCursor contiene información sobre la posición del cursor en QTextDocument y cualquier elección que haga. QTextCursor se modela de acuerdo con el comportamiento del cursor de texto en un editor de texto y proporciona un método de programación para realizar operaciones estándar a través de la interfaz de usuario.
  • Método document (): el método de documento devuelve el objeto de gestión de documentos QTextDocument del que depende el editor de texto, a través del cual el texto puede enriquecerse, y el objeto de documento del editor de texto puede cambiarse llamando al método setDocument
  • Método sureCursorVisible (): utilice este método para asegurarse de que el cursor en el editor esté visible y pueda desplazar el texto si no está visible actualmente
  • Método find (): encuentra la cadena especificada en el editor, llama a la sintaxis:
  • bool find (str exp, QTextDocument.FindFlags opciones =
    QTextDocument.FindFlags ())
  • bool find (QRegExp exp, QTextDocument.FindFlags opciones =
    QTextDocument.FindFlags ())

La exp puede ser una cadena regular o una expresión regular del tipo QRegExp, donde las opciones se utilizan para especificar si se debe buscar hacia adelante o hacia atrás, si se debe hacer coincidir mayúsculas o minúsculas al buscar, consulte la documentación oficial para obtener valores específicos . Cuando exp es una expresión regular, la opción para que coincida con el caso se ignora, pero la expresión regular controla si coincide con el caso

  • Método insertPlainText (): inserta el texto dado por el parámetro en la posición actual
  • Método moveCursor (): controla el movimiento del cursor en el editor, llama a la sintaxis :, moveCursor(operation, mode = QTextCursor.MoveAnchor)donde operación es el tipo de enumeración QTextCursor.MoveOperation, que se usa para controlar el método de movimiento del cursor, como moverse al principio del documento, moverse al principio de la línea, etc., valores específicos Consulte la documentación oficial, el modo es el tipo de enumeración QTextCursor.MoveMode, para valores específicos, consulte la documentación oficial
  • método paste (): pegar es el método de ranura, copie el texto del portapapeles en la posición actual
  • Métodos redo () y undo (): deshacer y rehacer son métodos de ranura. Después de ejecutar el método undo (), puede usar redo para volver a ejecutar la última operación
  • Método selectAll (): selectAll es un método de ranura para seleccionar todo el texto
  • Método setCurrentCharFormat (): establece información de control de formato de texto, sintaxis de llamada:setCurrentCharFormat(QTextCharFormat format)
  • El método setTextCursor (): El método setTextCursor se usa para establecer el objeto del cursor actualmente visible. La sintaxis de llamada :, El setTextCursor(QTextCursor cursor)objeto del cursor actual se puede obtener mediante el método textCursor ()
  • Métodos zoomIn (), zoomOut (): ambos son métodos de ranura, aumentan o reducen el tamaño del tamaño de parámetro especificado de la fuente de texto, setFontPointSize puede establecer el tamaño de fuente básico

Cuarto, la señal

  • blockCountChanged (int newBlockCount): esta señal se emite cuando cambia el número de bloques en el texto, el parámetro es el último número de bloque
  • copyAvailable (bool yes): esta señal se emite cuando se selecciona o deselecciona el texto, lo que indica si se puede copiar, sí es True para la selección, False cuando no se selecciona
  • cursorPositionChanged (): emite esta señal cuando cambia la posición del cursor
  • modificaciónCambiado (bool cambiado): esta señal se emite cuando cambia el contenido del documento (incluido el contenido del documento causado por las operaciones de deshacer y rehacer)
  • redoAvailable (bool available): esta señal se emite cuando cambia el estado de redo
  • : selectionChanged (): emite esta señal cuando cambia el texto seleccionado
  • textChanged (): emite esta señal cuando cambia el contenido del texto
  • disponible (bool disponible): esta señal se emite cuando cambia el estado de deshacer
  • updateRequest (QRect rect, int dy): esta señal se envía cuando el documento de texto necesita actualizar el área rect especificada. Si el texto se desplaza, rect cubrirá toda la ventana gráfica. Si el texto se desplaza verticalmente, dy transporta los píxeles de la ventana gráfica desplazada. El propósito de esta señal es admitir componentes adicionales en la subclase de edición de texto sin formato, como mostrar números de línea, puntos de corte u otra información adicional.

V. Resumen

Muchas funciones de QPlainTextEdit admiten la misma tecnología que QTextEdit. Al igual que QTextEdit, los objetos de texto en QPlainTextEdit dependen de la clase QTextDocument para la administración. La clase QTextDocument puede realizar operaciones enriquecidas en el texto con la ayuda de QTextCursor. Sin embargo, debido al tiempo y espacio limitados, este artículo no presenta QTextDocument y QTextCursor en detalle. Puede consultar los documentos de referencia o los documentos oficiales del sitio web proporcionados por el viejo simio en la sección de descripción general.

Old Ape Python, ¡aprende Python de Old Ape!

Publicado 779 artículos originales · elogiado 3478 · 430,000 vistas +

Supongo que te gusta

Origin blog.csdn.net/LaoYuanPython/article/details/105610233
Recomendado
Clasificación