QtDesigner – Gibt es eine Anleitung für den Einstieg?

  • Ich habe schon verschiedenste Python-Scripts geschrieben (nichts Großes, eben für den Hausgebrauch) und kenne mich einigermaßen damit aus. Bei einigen hätte ich gern eine vernünftige Benutzoberfläche. Das lässt sich mit PyQt5 ja machen. Dafür gibt es den QtDesigner, mit dem man so eine Oberfläche leicht herstellen kann. Ganz so leicht ist es aber doch nicht. Jedenfalls habe ich bisher keine Einleitung für den Anfang gefunden, mit der etwas anzufangen gewesen wäre. Was man im Netz findet (und für das Buch, was ich habe, trifft das weitgehend auch zu), sind entweder Erläuterungen, die weitschweifig zeigen, wie man Python installiert, wie man Qt5 installiert, wie man den QtDeisgner findet usw., und dann kurz zeigen, dass man mit einer Vorlage eine Oberfläche erstellen kann, die man dann in ein Projekt einbinden kann. Fertig. Leider habe ich keine einzige Anleitung gefunden, bei der Oberfläche am Ende so aussieht, wie sie im Designer erstellt wurde. Ich kann mir aber nicht vorstellen, dass das nicht geht.


    Hat jemand einen Tip für so eine Einführung (Buch, eBook, Webseite), die wirklich hilft? Was mir gar nichts hilft, sind cool hingestotterte Videos, bei denen mir alle Minute erklärt wird, wie irre geil der Designer ist, aber nicht, wie er zu benutzen ist. Die gibt es haufenweise. Aber gibt es auch etwas Besseres? Ich bin gerade am Verzweifeln, weil alles Suchen ohne Ergebnis geblieben ist.

  • Nein, diese offizielle Anleitung kannte ich nicht. Der erste flüchtige Blick scheint mir aber meine Befürchtung zu bestätigen, dass alle anderen Anleitungen (einschließlich der gedruckten Bücher, die ich angeschaut habe) unbrauchbar sind. Allerdings fürchte ich, dass auch das nicht stimmt. Bisher war es immer so, dass alles, was ich im Designer gestaltet habe, in der Vorschau sehr gut aussah, im Programm aber vollkommen anders. Das fängt damit an (hört damit aber nicht auf), dass in der Vorschau unter Windows die richtigen Windows-Schalter angezeigt werden, bei der Verwendung in Python dann aber nicht. Da behaupten zwar alle Anleitungen, man würde sehen, was man gestaltet, aber das eben glaube ich inzwischen nicht mehr. Na, immerhin. Neues Spiel – neues Glück. Ich probiere das noch mal aus. Wenn das auch nichts wird, bin ich wohl zu blöd dafür und gebe es auf.

  • Hmm. Ja. Wie ich es mir schon dachte. Ist es also wirklich so, dass es keine Anleitung gibt, die erklärt, wie man mit dem QT Designer z. B. ein Dialogfenster herstellt, und zwar so, dass man die Anleitung verstehen kann, wenn man es nicht schon vorher weiß? Das ist ja wirklich schade...

  • Hallo,


    Qt ist auch nicht wirklich was für "mach' mal schnell eine GUI". Da musst du generell schin Zeit und Muße rein stecken.


    Bzgl. des Dialogfensters: wieso brauchst du dafür einen GUI-Designer? AFAIK kann das kein GUI Designer, damit macht man "nur" das Hauptfenster.


    Je nach dem, was du vorhast, macht es vielleicht auch mehr Sinn, die GUI deklarativ in QML zu beschreiben?


    Quote

    dass in der Vorschau unter Windows die richtigen Windows-Schalter angezeigt werden, bei der Verwendung in Python dann aber nicht.

    Der Satz macht inhaltlich wenig Sinn, weil Windows ein Betriebssystem ist und Python eine Programmiersprache - die auf X Betriebssystemen läuft. Auf welchem OS soll denn deine Python Applikation laufen?


    Grundsätzlich: GUI Programmierung ist aufwendig und hat relativ viel Overhead. Gerade wenn deine Applikationslogik relativ einfach ist, kann es durchaus sein, dass die GUI 5-10x so viele Code braucht. Ist nicht Qt spezifisch, ist bei Tkinter und GTK und ... genau so.


    Gruß, noisefloor

  • Mit dem Satz, der wenig Sinn »macht« (wie er das überhaupt tun könnte, ist mir nicht klar), war gemeint, dass das Fenster in der Vorschau des Designers richtig angezeigt wird, aber nicht, wenn ich die ui-Datei in eine Python-Datei umwandle, in das Skript importiere und von diesem aus anzeige. Oder auch, wenn ich mit pyuic5 und der Option -x eine Python-Datei herstelle und diese ausführe.


    Wieso der Designer nicht geeignet sein soll, Daloge herzustellen, wenn er gleich drei Vorlagen dafür anbietet, ist mir übrigens nicht ganz klar.

  • Habe gerade nicht viel Zeit, daher erstmal nur auf die Schnelle:

    Im Qt Designer ein mainwindow (oder anderes) nach eigenem Gusto erstellen.

    Eine GUI.py o.ä. erstellen, in der du eine Klasse für dein Hauptfenster , z.B. MyMainWindow schreibst, die von QMainWindow erbt.


    Versuche mal folgende Struktur dafür:


    Wenn du damit weiterkommst, ist es gut. Sonst melde dich, dann schreibe ich heute Abend ein Mini Beispiel.


    Edit:

    Dialoge, etc sind natürlich auch mit dem Designer möglich.

    Ich würde keinen Umweg über pyuic nehmen, sondern immer eigene Klassen schreiben und die mit der designten .ui Datei füttern.

    Du kannst du übrigens auch deine selbstgeschriebenen Klassen in QtDedigner nutzen (Rechtsklick => Platzhalter für eigene Klasse)


    Edit2:

    Bitte nicht umbringen, mods. Ich formatiere den Code später noch um.

    Edited 3 times, last by El_Zetto ().

  • Dass es so funktioniert, weiß ich ja schon. Was ich nicht weiß, ist, wie es möglich ist, die Oberfläche so zu gestalten, dass sie dann auch so aussieht, wie ich sie gestaltet habe. Das ist nämlich nicht der Fall, und keines der Beispiele aus allen Anleitungen, die ich bisher konsultiert habe, leistet das. Die Elemente sind ganz anders über das Fenster verteilt und habe eine ganz andere Größe (genauer: sie sind so klein, dass nicht einmal die Beschriftung reinpasst). Wie das zu ändern ist, erläutert keine Anleitung. Und damit bleiben sie alle die Auskunft schuldig, wozu das Programm eigentlich dient. Zum Entwurf einer Benutzeroberfläche ja anscheinend nicht. Ich kann mir zwar eine malen und dann anschauen, aber das kann ich mit Bleistift und Papier auch.

  • Nutzt du ein Grid oder Formlayout im Fenster?

    Zeig mal bitte deinen code und dein Designer file her.

    Der Designer funktioniert eigentlich sehr gut. Ich habe schon GUI für Windows und Linux damit gebaut.

  • Es kann schon sein, dass der Designer sehr gut funktioniert. Die Schwierigkeit ist, zu ermitteln, wie er funktioniert, weil die entsprechenden Anleitungen gedruckte und im Netz verfügbare, die ich bisher konsultiert habe, fast ausschließlich Beispiele bringen, die nicht stimmen. Es geht also gar nicht darum, welche Sorte Layout ich verwenden, sondern um die Frage, wie ich den Designer verwende. Und um diese zu klären, wäre eine entsprechende Anleitung nötig, die es nicht zu geben scheint.


    Es erhebt sich zum Beispiel gleich zu Anfang die Frage, warum der Designer scheinbar eine WYSIWYG-Anwendung ist und diesen Anspruch auch durch die Vorschau bekräftigt, die genau das anzeigt, was man zusammengestellt hat, obwohl das überhaupt nicht stimmt. Eine gute Anleitung würde gleich am Anfang diese Frage klären und damit auch den Funktionsmechanismus des Werkzeugs begreiflich machen. Es gibt aber keine solche Anleitung. Alle empfehlen, die entsprechenden Steuerelemente auf der Oberfläche zu platzieren und behaupten, wenn man den entstehenden Code in das Skript einbindet, sind sie auch an den entsprechenden Stellen und in der entsprechenden Größe, was aber keineswegs der Fall ist. Wenn ich zum Glauben an Verschwörungstheorien neigen würde, könnte ich fast annehmen, es gäbe da ein Geheimnis, das absichtlich verschwiegen wird. In Wahrheit ist es natürlich nur Schlamperei der Autoren, wie sie im Genre der IT-Fachliteratur allgemein üblich ist.

  • Das Problem ist mit meiner Frage formuliert. Ich möchte äußern, ob es eine Anleitung für den Einstieg gibt, die insofern stimmt und nützlich ist, als die Beispiele stimmen und instruktiv sind. Ich möchte nicht, dass mir jemand die Oberfläche gestaltet. Das möchte ich selbst machen, wenn es möglich ist, zu erfahren, wie es mit den Designer funktioniert. Aber anscheinend gibt es keine solche Anleitung. Code kann ich nicht vorzeigen, weil ich bisher nur nach den Anleitungen ein paar Steuerelemente platziert habe, um dann zu sehen, dass sich das Ergebnis ganz erheblich von fern unterscheidet, was die Abbildung in der Anleitung zeigt. Eben daraus ergibt sich die Frage, ob es eine Anleitung gibt, deren Autor die Beispiele ausprobiert hat, oder nicht.


    Wie es scheint, ist das nicht der Fall. Und mehr gibt es dann nicht dazu zu sagen.

  • Ich habe es auch mit Beispielen aus dem Netz gelernt. Die meisten Tutorials nutzen pyuic zum erzeugen neuer Dateien. Ich nehme, dass auch du den Weg nimmst.

    Mein Beispiel oben nutzt PyQt5.uic.loadUi und funktioniert. Gerade getestet. (Sinnhaftigkeit der GUI sei mal dahingestellt)


    .ui Datei wie er im Designer erstellt wird:


    Oberfläche, die im Python script geladen wird.

  • Hallo,


    meine Antwort kommt erst heute, denn ich bin hier noch nicht lange in diesem Forum mit dabei. Auch ich hatte das Bedürfnis meinen Scripten ein "Gesicht" zu geben. Da ist Qt (oder besser PyQt) eine sehr gute Möglichkeit. Man findet zwar einiges an Videos zu dem Thema aber so richtig an die Hand genommen und mit einem einfachen Beispiel versehen wird man da nicht. (Oder ich habe das noch nicht gefunden, wovon ich mal ausgehe.).


    Also habe ich mich einmal hingesetzt und da was gemacht. Denn man kann den QtDesigner sehr gut verwenden und das Einbinden der Arbeiten des QtDesigners in Python ist total einfach. Und ich folge da einem anderen Weg als der vorhergehende Beitrag, der ebenfalls eine Lösung ist. Nur hier muss man die Dateien, die für loadUI benützt werden mit verwenden, wenn man aus dem Script mal eine einzige ausführbare Datei machen will. Bei meiner Art entfällt das.


    Wer also Interesse daran hat:

    External Content youtu.be
    Content embedded from external sources will not be displayed without your consent.
    Through the activation of external content, you agree that personal data may be transferred to third party platforms. We have provided more information on this in our privacy policy.


    Und keine Angst, ich gebe am Anfang da erst einige Worte zum Thema und meiner Intention für das Video ab. Das dauert schon ein paar Minuten, aber das Wesentliche wird dann in dem Hauptteil des Videos zu sehen sein.


    Vielleicht hilft das ja weiter.

    Micha

    Edited once, last by McFlyD ().

  • McFlyD Danke für das Video. Du triffst hier meinen Nerv weil ich derzeit herumprobiere womit ich am besten zurecht komme.

    Ich habe früher wxWidgets in C++ verwendet, aber fand es umständlich. Der einzige Vorteil ist dass wxWidgets den Code direkt in der Zielsprache ausgibt.


    Leider ist der Sound deines Videos bei mir extrem leise, ich musste mich in einem stillen Kämmerchen einschliessen um zu hoeren was du sagst.

    Dein Video hab ich ganz durchgearbeitet und auch alles verstanden, nur die Tatsache dass du immer zwischen dem QT5 Designer und dem Editor (Spyder) umschaltest hab ich anfangs nicht mitbekommen, weil du es nicht explizit ansagst. Ich dachte das ist im QT Designer enthalten, fand aber nicht wohin ich klicken muss. --- Bis ich auf die Kopfzeile geschaut hab. Soll keine kritik sein, nur ein Verbesserungsvorschlag für evtl folgende Videos. Ansonsten :thumbup:

  • Hallo nurazur,


    schön, dass es Dir weiterhilft. Und Deine Hinweise sind angekommen. Ich werde bei meinem nächsten Video (falls es so etwas mal geben wird) darauf achten. Danke dafür.


    Denn mit dem Ton scheint es wirklich ein Problem zu geben. Das Video ist auch von verschiedenen Freunden gesehen worden und da kam auch einmal die Rückmeldung von wegen zu leise. Ein anderer sagte mir ich solle leiser sprechen, denn ich wäre zu laut. Hier bei mir hört es sich sowohl unter Windows als auch unter Linux normal an. Da werde ich noch ein bisschen was zu tun haben.


    Viel Spass bei Coden.
    Micha

  • Hallo zusammen,


    habe mir das Video noch einmal vorgenommen und ich denke das Ton Problem ist gelöst. Nur damit hat sich der Link natürlich geändert.


    Hier die überarbeitete Version:


    External Content youtu.be
    Content embedded from external sources will not be displayed without your consent.
    Through the activation of external content, you agree that personal data may be transferred to third party platforms. We have provided more information on this in our privacy policy.


    Viel Spass
    Micha

  • Hallo zusammen,


    der Raspberry Pi war für mich bisher nur ein kleines nettes Spielzeug. Jetzt habe ich einen geschenkt bekommen und bin dadurch auch auf Python gestoßen.


    Aus dem Spielzeug ist mittlerweile deutlich mehr geworden und auch Python nimmt einen immer größeren Wert in meinen Arbeiten.

    Deshalb habe ich nach einer Möglichkeit für die Gestaltung einer GUI gesucht. Hier kommt QT ins Blickfeld. Nun ist QT ein sehr gewaltiges Framework und damit ist einen Menge Lernen angesagt. Da ist der QTDesigner ein sehr gutes Tool.


    Das Einbinden der Arbeiten aus diesem Tool kann man auf zwei Arten bewerkstelligen. Zum Einen durch die im vorstehenden Beitrag angegebenen Link. Über diesen Link bekommt man ein Beispiel wie das zu bewerkstelligen ist. Zum Anderen geht es aber auch durch die in dem Video beschriebenen Schritte.


    Und hier habe ich gleich ein kleines Problem. Im vorstehenden Beitrag steht etwas von Anpassungen, die man da wohl immer wieder machen muss. Nur mein Problem dabei ist, ich kann diese Änderungen nicht sehen.


    Denn ich habe mir die Mühe gemacht und beide Verfahren einmal ausprobiert. Dabei war das im Video beschriebene Verfahren für mich intuitiver und praktikabler. Und irgendwelche Änderungen musste ich in keinem Fall an den Dingen, die bei dem Verfahren angefallen sind machen.


    Und die Anwendungslogik muss in beiden Fällen ja separat geschrieben werden. Wenn ich dann noch den Code sehe, der bei meinen kleinen Arbeiten schon angefallen ist, das sind ausgedruckt immerhin vier volle Seiten, dann kann ich zum Thema von Hand schreiben nur sagen, viel Spaß.


    Und wenn man dann auch noch die Anmerkungen im Video beachtet, dann wird es interessant. Denn wenn man aus seinem Script wirklich ein lauffähiges Programm machen möchte, dann müssen die UI-Dateien des Designers im ersten Fall immer mitgegeben werden. Bei dem Verfahren aus dem Video bekommt man eine einzige Datei und die UI-Dateien sind dabei vollkommen uninteressant.


    Abgesehen davon kann ich nachvollziehen was QT da mit der GUI anstellt. Im Verfahren, das die UI-Dateien benützt sehe ich das nicht. Denn da wird ja diese XML-Datei von der Methode, die diese Datei lädt in entsprechende Dinge umgesetzt ohne das man selbst davon sehen kann. Nur das Endergebnis taucht auf.


    Für mich ist die Wahl gefallen.
    Grüsse
    Gerd