Frage

Ich schreibe eine GUI-Anwendung mit PyQt4 (Python3). Einer meiner Freunde wies darauf hin, dass die Verwendung von pyuic4 eine schlechte Praxis ist, und verwies mich auf das uic-Modul und die Funktionen zum Verbinden von Slots nach Namen. Er hatte keine Zeit mehr zu erklären und die Referenzen, die ich habe, sind ziemlich kurz, ich konnte die Idee von ihnen nicht erfassen ( uic module , LoadingUIFilesAtRuntime , Steckplätze nach Namen verbinden ).

Bei StackOverflow gibt es mindestens eine verwandte Frage aber die Links zur Literatur sind dort gebrochen.

Ich konnte Standard-Tutorials folgen und eine einfache Benutzeroberfläche mit pyuic erstellen, bin aber jetzt etwas verwirrt ... Gute Beispiele und / oder Referenzen sind willkommen.

War es hilfreich?

Lösung

Erstens ist die Verwendung von pyuic4 sicherlich keine "schlechte Praxis".

Es gibt drei Möglichkeiten, PyQt4-Benutzeroberflächen in Ihren Code zu integrieren:

  • Schreiben Sie alles selbst von Hand
  • Verwenden Sie pyuic4, um automatisch ein Python-Modul zu generieren, das importiert werden kann
  • Verwenden Sie das Paket uic, um ui-Dateien direkt zur Laufzeit zu laden

    Von diesen sind die ersten beiden bei weitem die häufigsten, und die meisten Dokumentationen, Tutorials, Ratschläge usw., auf die Sie stoßen, verwenden diese Methoden.

    Eine gute Quelle für PyQt4-Tutorials finden Sie in diesem Abschnitt des PyQt4 Wiki . Ich sollte jedoch wahrscheinlich darauf hinweisen, dass viele von ihnen, obwohl sie immer noch relevant sind, ziemlich alt sind und daher immer noch die Signale und Slots im alten Stil verwenden.

    Der Unterschied zwischen dem alten und dem neuen Stil ist jedoch nicht so schwer zu verstehen, sodass möglicherweise nur ein einfaches Beispiel erforderlich ist.

    Hier ist die alte Methode, um ein Klick-Signal mit einer Handler-Methode (auch bekannt als Slot) zu verbinden:

    self.connect(self.button, QtCore.SIGNAL('clicked()'), self.handleButtonClick)
    

    und hier ist der neue Weg:

    self.button.clicked(self.handleButtonClick)
    

    Wie Sie sehen können, ist der neue Stil viel einfacher und pythonischer. Auf der anderen Seite ähnelt der alte Stil der Verbindung von Signalen mit C ++ (und kann aus diesem Grund unter bestimmten Umständen immer noch nützlich sein).

    Wenn Sie beim Schreiben Ihrer GUIs Probleme mit dem Verbinden von Signalen haben, können Sie hier immer eine Frage stellen. Es ist jedoch viel einfacher, gute Antworten zu erhalten, wenn Sie bestimmte Fragen stellen, die Beispielcode enthalten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top