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