2016-05-03 20 views
0

Ich habe ein QLineEdit-Feld und ein QPushButton. Die Schaltfläche sollte deaktiviert werden, solange QLineEdit leer ist.Wie deaktiviert man eine Schaltfläche, wenn ein Bearbeitungsfeld nicht leer ist?

Wie geht das?

+1

Zunächst die Schaltfläche deaktivieren; und dann auf dem EditField, sobald es einige Eingaben akzeptiert, lassen Sie die Schaltfläche ändern - wenn es Text gibt, aktiviert es die Schaltfläche, wenn der Benutzer den gesamten Text gelöscht hat, deaktivieren Sie die Schaltfläche. – dwanderson

+1

Sie möchten vielleicht [Signale und Steckplätze in Pyside] (https://wiki.qt.io/Signals_and_Slots_in_PySide) auschecken. Ihre QEditLine sendet ein [textChanged-Signal] (https://deptinfo-ensip.univ-poitiers.fr/ENS/pyside-docs/PySide/QtGui/QLineEdit.html#PySide.QtGui.PySide.QtGui.QLineEdit.textChanged), wenn ... nun, sein Text ändert sich, und Sie können dann überprüfen, was der aktuelle Text ist und den Status Ihrer Schaltfläche entsprechend einstellen. – Hans

Antwort

4

gut, werde ich nur schließen, was sie in den Kommentaren gesagt, einige Code wie

self.btnButton.setDisable(True) 
self.leInput.textChanged.connect(self.disableButton) 
def disableButton(self): 
    if len(self.leInput.text()) > 0: 
     self.btnButton.setDisable(False) 

und ja, die Signale/Funktionsnamen offensichtlich sind, müssen Sie mehr auf der docs/Tutor überprüfen

0

Hier ist ein Einzeiler Lösung:

self.textBox.textChanged[str].connect(lambda: self.myBtn.setEnabled(self.textBox.text() != "")) 

Sie noch den Anfangszustand der Schaltfläche auf false setzen haben. Sie können dies jedoch in der Deklaration tun. z.B.

self.myBtn = QtGui.QPushButton("My Button", enabled=False)