PyQt - Widget QLineEdit

QLineEditobjeto es el campo de entrada más utilizado. Proporciona un cuadro en el que se puede ingresar una línea de texto. Para ingresar texto de varias líneas,QTextEdit se requiere el objeto.

La siguiente tabla enumera algunos métodos importantes de la clase QLineEdit:

A continuación se muestran los métodos de QLineEdit más utilizados.

No Señor. Métodos y descripción
1

setAlignment()

Alinea el texto según las constantes de alineación

Qt.AlignLeft

Qt.AlignRight

Qt.AlignCenter

Qt.AlignJustify

2

clear()

Borra el contenido

3

setEchoMode()

Controla la apariencia del texto dentro del cuadro. Los valores de Echomode son -

QLineEdit.Normal

QLineEdit.NoEcho

QLineEdit.Password

QLineEdit.PasswordEchoOnEdit

4

setMaxLength()

Establece el número máximo de caracteres para ingresar

5

setReadOnly()

Hace que el cuadro de texto no se pueda editar

6

setText()

Establece el texto mediante programación

7

text()

Recupera texto en el campo

8

setValidator()

Establece las reglas de validación. Los validadores disponibles son

QIntValidator - Restringe la entrada a un número entero

QDoubleValidator - Fracción parte del número limitada a decimales especificados

QRegexpValidator - Comprueba la entrada con una expresión Regex

9

setInputMask()

Aplica máscara de combinación de caracteres para la entrada.

10

setFont()

Muestra el contenido del objeto QFont.

El objeto QLineEdit emite las siguientes señales:

A continuación se muestran los métodos de señales más utilizados.

No Señor. Métodos y descripción
1

cursorPositionChanged()

Siempre que el cursor se mueva

2

editingFinished()

Cuando presiona 'Enter' o el campo pierde el foco

3

returnPressed()

Cuando presionas 'Enter'

4

selectionChanged()

Siempre que cambie el texto seleccionado

5

textChanged()

A medida que el texto en el cuadro cambia por entrada o por medios programáticos

6

textEdited()

Siempre que se edite el texto

Ejemplo

Los objetos QLineEdit de este ejemplo demuestran el uso de algunos de estos métodos.

Primer campo e1muestra texto usando una fuente personalizada, alineado a la derecha y permite la entrada de números enteros. El segundo campo restringe la entrada a un número con 2 dígitos después del punto decimal. Se aplica una máscara de entrada para ingresar el número de teléfono en el tercer campo. señal textChanged () en el campoe4 está conectado al método de ranura textchanged ().

Contenido de e5campo se repiten en forma de contraseña ya que su propiedad EchoMode está establecida en Contraseña. Su señal de edición finalizada () está conectada al método presentador (). Entonces, una vez que el usuario presione la tecla Enter, la función se ejecutará. El campoe6 muestra un texto predeterminado, que no se puede editar porque está configurado para solo lectura.

import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *

def window():
   app = QApplication(sys.argv)
   win = QWidget()
	
   e1 = QLineEdit()
   e1.setValidator(QIntValidator())
   e1.setMaxLength(4)
   e1.setAlignment(Qt.AlignRight)
   e1.setFont(QFont("Arial",20))
	
   e2 = QLineEdit()
   e2.setValidator(QDoubleValidator(0.99,99.99,2))
	
   flo = QFormLayout()
   flo.addRow("integer validator", e1)
   flo.addRow("Double validator",e2)
	
   e3 = QLineEdit()
   e3.setInputMask('+99_9999_999999')
   flo.addRow("Input Mask",e3)
	
   e4 = QLineEdit()
   e4.textChanged.connect(textchanged)
   flo.addRow("Text changed",e4)
	
   e5 = QLineEdit()
   e5.setEchoMode(QLineEdit.Password)
   flo.addRow("Password",e5)
	
   e6 = QLineEdit("Hello Python")
   e6.setReadOnly(True)
   flo.addRow("Read Only",e6)
	
   e5.editingFinished.connect(enterPress)
   win.setLayout(flo)
   win.setWindowTitle("PyQt")
   win.show()
	
   sys.exit(app.exec_())

def textchanged(text):
   print "contents of text box: "+text
	
def enterPress():
   print "edited"

if __name__ == '__main__':
   window()

El código anterior produce la siguiente salida:

contents of text box: h
contents of text box: he
contents of text box: hel
contents of text box: hell
contents of text box: hello
editing finished