Seite 1 von 1

Fragen zu PyQt5

Verfasst: Montag 25. Juni 2018, 14:03
von Ulrich_G
Hallo,
ich hätte mal eine generelle Frage zu PyQt5.
Habe mir damit eine passende *.ui Datei erstellt und diese in Python kompiliert:

Code: Alles auswählen

pyuic5 -x firstgui.ui -o firstgui.py
danach den Code der firstgui.py Datei um entsprechende code (z.B. Buttons, Funktionen usw.) erweitert und getestet ... soweit so gut. Funktioniert ganz gut.

Nun stellt sich die Frage:
Was wenn ich jetzt mit dem PyQT5 Designer weiter an meiner Oberfläche arbeite und weitere Elemente hinzukommen.... wie kann ich den bereits bestehenden Code erweitern? Kompiliere ich erneut, ist der Code meiner Ergänzungen natürlich wieder weg. Schöner wäre es nicht jedes mal eine neue firstgui.py erstellen zu müssen sondern lediglich die geänderte firstgui.ui einzulesen. Ist dies überhaupt möglich oder habe ich das Prinzip von PyQt5 noch nicht ganz verstanden?

Danke schon mal

Gruß Ulrich

Re: Fragen zu PyQt5

Verfasst: Montag 25. Juni 2018, 14:08
von __blackjack__
Also erst einmal braucht man gar keinen Python-Quelltext erstellen, sondern kann auch die *.ui-Datei zur Laufzeit laden. Wenn man Quelltext erstellt, dann verändert man den *nicht*. Da sollte im Quelltext auch ein Kommentar stehen. Und beide Möglichkeiten werden auch in der PyQt-Dokumentation beschrieben.

Re: Fragen zu PyQt5

Verfasst: Montag 25. Juni 2018, 14:26
von Ulrich_G
Okay das habe ich laut einem Beispiel damit versucht:

Code: Alles auswählen

from PyQt5 import uic, QtWidgets
import sys

class Ui(QtWidgets.QDialog):
    def __init__(self):
        super(Ui, self).__init__()
        uic.loadUi('SomeUi.ui', self)
        self.show()

if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    window = Ui()
    sys.exit(app.exec_())
das scheint aber noch nicht zu funktionieren. Die Fehlermeldung lautet: TypeError: ('Wrong base class of toplevel widget', (<class '__main__.Ui'>, 'QMainWindow'))

Re: Fragen zu PyQt5

Verfasst: Montag 25. Juni 2018, 14:52
von Sirius3
Du hast im Qt-Designer ein QMainWindow erzeugt, willst das aber auf einen QDialog anwenden. Das geht natürlich nicht. Baue im Qt-Designer einen Dialog, wenn Du einen Dialog willst.

Re: Fragen zu PyQt5

Verfasst: Montag 25. Juni 2018, 14:53
von __deets__
Ja, und stimmt doch auch. Du baust ein QMainWindow, aber deine Ui erbt von QDialog. Die muss entweder von QMainWindow erben, oder du aenderst dein .ui-File zu einem Dialog.

Re: Fragen zu PyQt5

Verfasst: Montag 25. Juni 2018, 15:05
von Ulrich_G
okay das war jetzt fast schon peinlich ... danke euch ;-)
Geht !

Re: Fragen zu PyQt5

Verfasst: Mittwoch 27. Juni 2018, 10:08
von Ulrich_G
Welchen Designer würdet ihr mir empfehlen wenn man moderne, zeitgemäße Oberflächen für Python erstellen möchte?
Bin ich mit PyQt5 gut bedient oder gibt es "bessere" für meine Ansprüche.
Ich habe bis vor kurzem meine Applikationen mit VBA erstellt und bin auf der suche nach einer moderneren und flexibleren Gestaltung

Re: Fragen zu PyQt5

Verfasst: Mittwoch 27. Juni 2018, 10:21
von __blackjack__
Bei Desktop-GUIs ist man mit Qt gut aufgestellt. Es gibt allerdings Leute die unter moderner, zeitgemässer Oberfläche Webanwendungen verstehen würden.

Re: Fragen zu PyQt5

Verfasst: Mittwoch 27. Juni 2018, 10:22
von __deets__
Der Designer von Qt ist schon so ziemlich das beste was man bekommt. Mit einer Einschaerkung, die auch fuer VBA gilt: sind VBA oder Qt Oberflaechen "modern und zeitgemaess". Der Trend zu Animationen und gleichzeitig touch-bedienbaren Schnittstellen ist mit den Designern nicht nachvollziehbar. Da gibt es mit QML in Qt und Kivy ganz allgemein fuer Python andere Ansaetze. Die haben aber keine Designer, sondern da kodierst du. Allerdings in beiden Faellen mit einem wie ich finde deutlich ueberlegenen Modell von "properties", also Eigenschaften von Objekten die automatisch eine zwei-wege-Bindung an die GUI haben. Aendert sich das Modell, aendert sich die GUI. Und umgekehrt. Und dann gibt es natuerlich noch Electron, fuer die Freunde von JS. Das erlaubt mit Frameworks wie react, vue oder angular die volle Bandbreite der Browser-GUIs zu Desktopapplikationen zu buendeln. Und die Browser setzten hier klar die Masstaebe.

Ohne muehseliges verknoten von signalen und slots oder callbacks oder was auch immmer. Ob diese Ansaetze dir gefallen musst du natuerlich selbst entscheiden. Falsch machen tust du mit dem Qt5 und seinem Designer jedenfalls nichts.

Re: Fragen zu PyQt5

Verfasst: Mittwoch 27. Juni 2018, 10:40
von Ulrich_G
Vielen Dank . Das hat mir schon mal weiter geholfen.
Werde mir in den nächsten Tage ein paar Ansätze genauer anschauen.

Re: Fragen zu PyQt5

Verfasst: Mittwoch 27. Juni 2018, 17:01
von Tholo
__deets__ hat geschrieben: Mittwoch 27. Juni 2018, 10:22 Der Designer von Qt ist schon so ziemlich das beste was man bekommt....Da gibt es mit QML in Qt und Kivy ganz allgemein fuer Python andere Ansaetze. Die haben aber keine Designer, sondern da kodierst du.....
Kivy hat schon einen Designer. Leider ist der zZ. kaum bis gar nicht zu gebrauchen. Da er sehr fehlerhaft und buggy ist und zZ. leider nicht weiterentwickelt wird.
Ich verfolge Kivy und seine Coder auf mehreren Kanälen. In Sachen Designer ist es aber noch sehr Still.

Im Gegensatz zu QT5 und einem QT Designer Studio. Diese News hab ich erst Heute dazu gelesen. Auf Heise.de Qt-Aktualisierte-Runtime-fuer-3D-Studio-und-neues-Produkt-Design-Studio dort wird über das QT Design Studio gesprochen.