PyQt - Widget QLineEdit

QLineEditoggetto è il campo di input più comunemente utilizzato. Fornisce una casella in cui è possibile inserire una riga di testo. Per inserire testo su più righe,QTextEdit oggetto è richiesto.

La tabella seguente elenca alcuni metodi importanti della classe QLineEdit -

Di seguito sono riportati i metodi più comunemente usati di QLineEdit.

Sr.No. Metodi e descrizione
1

setAlignment()

Allinea il testo secondo le costanti di allineamento

Qt.AlignLeft

Qt.AlignRight

Qt.AlignCenter

Qt.AlignJustify

2

clear()

Cancella il contenuto

3

setEchoMode()

Controlla l'aspetto del testo all'interno della casella. I valori di Echomode sono -

QLineEdit.Normal

QLineEdit.NoEcho

QLineEdit.Password

QLineEdit.PasswordEchoOnEdit

4

setMaxLength()

Imposta il numero massimo di caratteri per l'immissione

5

setReadOnly()

Rende la casella di testo non modificabile

6

setText()

Imposta il testo a livello di codice

7

text()

Recupera il testo nel campo

8

setValidator()

Imposta le regole di convalida. I validatori disponibili sono

QIntValidator - Limita l'input al numero intero

QDoubleValidator - Parte frazione del numero limitata a decimali specificati

QRegexpValidator - Controlla l'input rispetto a un'espressione Regex

9

setInputMask()

Applica una maschera di combinazione di caratteri per l'input

10

setFont()

Visualizza il contenuto dell'oggetto QFont

L'oggetto QLineEdit emette i seguenti segnali:

Di seguito sono riportati i metodi di segnali più comunemente utilizzati.

Sr.No. Metodi e descrizione
1

cursorPositionChanged()

Ogni volta che il cursore si sposta

2

editingFinished()

Quando si preme "Invio" o il campo perde il focus

3

returnPressed()

Quando premi "Invio"

4

selectionChanged()

Ogni volta che il testo selezionato cambia

5

textChanged()

Poiché il testo nella casella cambia in base all'input o con mezzi programmatici

6

textEdited()

Ogni volta che il testo viene modificato

Esempio

Gli oggetti QLineEdit in questo esempio dimostrano l'uso di alcuni di questi metodi.

Primo campo e1mostra il testo utilizzando un carattere personalizzato, allineato a destra e consente l'immissione di numeri interi. Il secondo campo limita l'input a un numero con 2 cifre dopo il punto decimale. Sul terzo campo viene applicata una maschera per l'inserimento del numero di telefono. segnale textChanged () sul campoe4 è connesso al metodo slot textchanged ().

Contenuti di e5campo vengono visualizzati in formato password poiché la relativa proprietà EchoMode è impostata su Password. Il suo segnale editingfinished () è collegato al metodo presenter (). Quindi, una volta che l'utente preme il tasto Invio, la funzione verrà eseguita. Il campoe6 mostra un testo predefinito, che non può essere modificato poiché è impostato per la sola lettura.

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()

Il codice precedente produce il seguente output:

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