PyQt/QLineEdit
Description
[modifier | modifier le wikicode]QLineEdit est un widget représentant une zone d'édition de texte sur une seule ligne. Il permet à l'utilisateur de saisir et modifier du texte avec des fonctions d'édition utiles telles que la possibilité d'annuler et refaire une action, la gestion du copier-coller et du glisser-déposer, ainsi qu'une multitude de raccourcis clavier facilitant l'édition de texte.
Il est possible de transformer la zone de saisie de texte en zone lecture seule grâce à la méthode setReadOnly() ou bien de modifier la manière dont le texte introduit est affiché par un appel à la méthode echoMode() (par exemple ne rien afficher si on demande un mot de passe à l'utilisateur). Ce widget gère aussi les contraintes sur le texte entré, comme par exemple une longueur maximale (méthode maxLength()), ou des contraintes plus générales comme la validation. Elle est mise en place par l'intermédiaire de la méthode setValidator()) (prenant en paramètre un objet de la classe QValidator) ou par l'utilisation d'un masque de saisie avec la méthode setInputMask(). Le texte peut être modifié grâce aux méthodes setText() ou insert(), tandis qu'il peut être récupéré par la méthode text(). Le texte affiché, qui peut être différent du texte entré en fonction du mode d'écho, est quant à lui récupéré grâce à displayText(). Vous pouvez effectuer des sélections sur le contenu avec les méthodes setSelection() et selectAll(), sur lesquelles il est possible d'appliquer les traditionnels couper/copier/coller avec cut(), copy() et paste(). Le texte peut être aligné avec la méthode setAlignment().
Lorsque le texte est modifié par l'utilisateur, le signal textChanged() est émis. Lorsqu'il appuie sur la touche Entrée, c'est returnPressed() qui est émis. Cependant, si une validation du texte est active le signal est émis uniquement si le texte est valide.
Comme expliqué ci-dessus il y a une multitude de raccourcis clavier disponibles sur cette zone de texte. Pour en obtenir la liste, ainsi que tous les détails concernant ce widget, consultez la documentation de référence à l'adresse http://doc.trolltech.com/3.3/qlineedit.html. Un widget relatif à cette zone de saisie est QTextEdit, qui fournit une zone de saisie de texte sur plusieurs lignes et avec des possibilités de mise en page plus importantes. Consultez la section suivante pour obtenir plus d'informations à son sujet.
Constructeur
[modifier | modifier le wikicode]# Constructeurs pour la classe QLineEdit
QLineEdit ( QWidget parent, str name = "" )
QLineEdit ( QString contents, QWidget parent, str name = "" )
QLineEdit ( QString contents, QString inputMask, QWidget parent, str name = "" )
Exemple
[modifier | modifier le wikicode]
PyQt3.* #!/usr/bin/python
# -*- coding : utf-8 -*-
#
# qlineedit.py
# Programme exemple pour la classe QLineEdit
from qt import *
import sys
class Demo(QApplication) :
def init (self,args) :
QApplication. init (self, args)
# widget principal, il s'agit d'une fenêtre de dialogue
self.dialog = QDialog(None, "Dialog")
# Grille de 2 lignes pour l'affichage
self.grid = QGrid(2, Qt.Vertical, self.dialog)
self.grid.setMinimumWidth(400)
self.grid.setMinimumHeight(100)
# première zone de saisie de texte
self.line1 = QLineEdit(self.grid, "line1")
self.line1.setMinimumWidth(400)
self.line1.setMaxLength(50)
self.line1.setText("Entrez votre texte ici")
# seconde zone, en lecture seule
self.line2 = QLineEdit(self.grid, "line2")
self.line2.setReadOnly(True)
self.line2.setAlignment(Qt.AlignHCenter)
# le texte entré dans la première zone est copié dans la seconde
self.connect(self,SIGNAL("lastWindowClosed()"),self,SLOT("quit()"))
self.connect(self.line1,SIGNAL("textChanged(const QString&)"),
self.line2,SLOT("setText(const QString &)"))
self.dialog.show()
self.exec loop()
if name == "__main__" :
x = Demo(sys.argv)
PyQt4.* #!/usr/bin/python
# -*- coding : utf-8 -*-
#
# qlineedit.py
# Programme exemple pour la classe QLineEdit
from PyQt4.QtGui import *
from PyQt4.QtCore import *
import sys
class Demo(QApplication) :
def __init__(self, args) :
QApplication.__init__(self,args)
# widget principal, il s'agit d'une fenêtre de dialogue
self.dialog = QDialog()
self.dialog.setWindowTitle("Dialog")
self.grid = QGridLayout(self.dialog)
self.grid.setColumnMinimumWidth(400, 400)
self.grid.setRowMinimumHeight(100, 100)
# première zone de saisie de texte
self.line1 = QLineEdit("line1")
self.line1.setMaxLength(50)
self.line1.setText("Entrez votre texte ici")
# seconde zone, en lecture seule
self.line2 = QLineEdit("line2")
self.line2.setReadOnly(True)
self.line2.setAlignment(Qt.AlignHCenter)
self.grid.addWidget(self.line1)
self.grid.addWidget(self.line2)
self.dialog.setLayout(self.grid)
self.dialog.show()
self.connect(self,SIGNAL("lastWindowClosed()"),self,SLOT("quit()"))
self.exec_()
if __name__ == "__main__" :
app=Demo(sys.argv)
|