Ich versuche, pyqt zu verwenden, um ein benutzerdefiniertes QDialog-Fenster anzuzeigen, wenn auf eine Schaltfläche in einem QMainWindow geklickt wird. Ich bekomme immer den folgenden Fehler:
%Vor%Ich habe mehrere Online-Tutorials durchgegangen, aber die meisten von ihnen hören kurz davor auf, zu zeigen, wie man ein nicht eingebautes Dialogfenster benutzt. Ich habe den Code für das Hauptfenster und den Dialog mit pyuic4 generiert. Was ich denke, sollte der relevante Code sein. Was fehlt mir hier?
%Vor%Bonusfrage: Da es so aussieht, als könnten Sie Argumente in pyqt-Funktionsrückrufen nicht übergeben, wird etwas, das sonst als Argument übergeben würde (der schlecht benannte "c") global sein, der beste Weg, um Informationen zu erhalten diese Funktionen?
Ich habe das in der Vergangenheit so gemacht, und ich kann sagen, dass es funktioniert. Angenommen, Ihre Schaltfläche heißt "Button"
%Vor%Dies funktioniert für meine Anwendung, und ich glaube, es sollte auch mit Ihrer funktionieren. Ich hoffe, es wird Ihnen helfen, es sollte ziemlich geradlinig sein, die wenigen Änderungen zu tun, die nötig sind, um es auf Ihren Fall anzuwenden. Ich wünsche euch allen einen schönen Tag.
Ui_Dialog sollte von QtGui.QDialog inhärent sein, nicht Objekt.
%Vor% Warum QtGui.QWidget.__init___
???
Verwende:
Sie müssen __init__
methon von der Basisklasse (Name in Klammern '()')
QDialog haben zwei nützliche routins:
%Vor%Warten Sie zuerst auf den Abschlussdialog und dann können Sie auf jeden Feldformulardialog zugreifen. Zweiter Show-Dialog, aber warten Sie nicht. Um richtig zu arbeiten, müssen Sie einige Slot / Signal-Verbindungen einrichten, um auf Dialogaktionen zu reagieren.
z. für exec _ ():
%Vor% Kleiner Tipp: können Sie Ihre ui-Klassen in Widgets (mit Layouts) ändern. Und vielleicht ist das Problem, dass Ihr __init__
__init__(self, parent=None, dbConnection)
Da PyQt beim Erstellen eines neuen Widgets versuchen kann, es als Kind eines bestehenden zu setzen. (Ändern Sie also alle Init, um einen zusätzlichen Elternparam zu haben (muss an der zweiten Position sein)).