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