Ich habe eine PyQt-Schnittstelle erstellt, und jetzt möchte ich einige der aktiven/inaktiven Zustand seiner Widgets ändern oder interagieren mit ihnen von außerhalb der Widget-Klasse. Ich habe die Hauptfenster-Klasse mit all ihren Widgets und Funktionen außerhalb der Klasse - hier verbunden mit buttton1
. Mein Ziel in diesem Beispiel ist es button2
durch Drücken von button1
zu aktivieren.PyQt: Zugriff auf enabled-state von außerhalb der Widget-Klasse
Mit dem Code unten, bekomme ich den Fehler, dass meine Ui_MainWindow
Klasse nicht das Attribut button1
hat.
Der Code:
from PyQt4 import QtCore, QtGui
def toggle():
Ui_MainWindow.button2.setEnabled(True)
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName(_fromUtf8("MainWindow"))
self.button1 = QtGui.QPushButton(self.centralwidget)
self.button1.clicked.connect(toggle)
self.button2 = QtGui.QPushButton(self.centralwidget)
self.button2.setEnabled(False)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
MainWindow = QtGui.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
Bis weiß, dass ich mit Klassen vermieden, denn ehrlich gesagt, sind sie mir sehr abstrakt. Ich schätze, deshalb versage ich hier. Ich schätze, ich greife falsch auf die Widget-Klasse zu.
Ich wäre dankbar, wenn mir jemand in die richtige Richtung zeigen könnte. Ich habe alle Antworten auf ähnliche Probleme gelesen - aber es hat mir nicht geholfen, zu einer Lösung zu kommen.
Dank für Ihre Anweisung. Ihr Beispiel beschreibt jedoch den Verweis von einer Funktion innerhalb der MainWindow-Klasse. Wie würdest du es von einer Funktion außerhalb der Klasse machen? – Esmi
@Esmi. Sie haben darum gebeten, in die richtige Richtung zu zeigen, und das bedeutet, dass Sie Methoden anstelle von externen Funktionen verwenden. Wenn Sie versuchen, Letzteres zu tun, kann das Schreiben von gutem GUI-Code ziemlich schwierig werden. Hast du einen bestimmten Grund, dass du so etwas machen willst? Welches Problem versuchen Sie zu lösen? – ekhumoro