Öffnen Sie ein zweites Fenster in PyQt

8

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?

    
James 27.11.2009, 07:50
quelle

3 Antworten

16

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.

    
japs 03.03.2010, 14:18
quelle
3

Ui_Dialog sollte von QtGui.QDialog inhärent sein, nicht Objekt.

%Vor%     
Gary van der Merwe 11.01.2010 11:30
quelle
1
%Vor%

Warum QtGui.QWidget.__init___ ??? Verwende:

%Vor%

Sie müssen __init__ methon von der Basisklasse (Name in Klammern '()')

aufrufen

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)

sein sollte

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

    
przemo_li 28.11.2009 19:12
quelle

Tags und Links