Seite 1 von 1
Wie GUI öffnen?
Verfasst: Sonntag 16. April 2017, 13:33
von Ralf_90
Guten Tag Python-Forum,
ich bin ein Python-Neuling, deshalb klingt diese Frage vllt. blöd:
WIe öffnet man durch Doppelklicken eine selbstprogrammierte GUI, wenn diese aus zwei Modulen besteht (GUI.py und SQLManager.py). GUI.py benötigt SQLManager.py um auf eine Datenbank zuzugreifen. Wenn ich GUI.py in Spyder laufen lasse, klappt alles wunderbar. Wenn ich die GUI.py durch einen Doppelklick öffne, geht das Hauptfenster auf, aber ich kann nicht auf die Datenbank zugreifen.
Ich denke ich muss beide (.py) -Dateien irgendwie verbiden. Aber wie geht das?
PS: SQLManager.py ist natürlich in GUI.py durch eine Importanweisung eingebunden.
Re: Wie GUI öffnen?
Verfasst: Sonntag 16. April 2017, 14:02
von BlackJack
@Ralf_90: Das hängt vom Betriebssystem beziehungsweise vielleicht auch vom Programm an in dem Du den Doppelklick auf die Datei durchführst. Wobei das in den allermeisten Fällen eigentlich so funktionieren sollte wie Du das beschreibst.
Unter Linux beispielsweise würde ich wahrscheinlich eine *.desktop-Datei anlegen. Da kann man dann konfigurieren was das aktuelle Arbeitsverzeichnis ist, und auch einen Namen und ein Icon für die Anwendung festlegen.
Re: Wie GUI öffnen?
Verfasst: Sonntag 16. April 2017, 14:29
von Ralf_90
Ich habe Windows 7 64Bit. Wenn ich die GUI.py über die Kommandokonsole starte, klappts auch nicht.
Es geht nur in der IDE Spyder. Komisch.
Hatte denn niemand dasgeiche Problem?
Re: Wie GUI öffnen?
Verfasst: Sonntag 16. April 2017, 14:44
von BlackJack
@Ralf_90: Im Kommandozeilenfall, was bedeutet „klappts auch nicht” denn genau? Da muss dann ja irgendeine Fehlermeldung kommen — welche?
Re: Wie GUI öffnen?
Verfasst: Sonntag 16. April 2017, 22:55
von Ralf_90
Ich habe den Fehler gefunden und behoben: Wenn aus einem LineEdit der eingegebene Text mittels .text() ausgelesen wird. so muss dieser Text zuerst mittels str() in einen String umgewandelt werden bevor die Methode strip() darauf angewendet wird. PyQt4 kennt anscheinend kein strip().
Re: Wie GUI öffnen?
Verfasst: Montag 17. April 2017, 15:30
von bb1898
Ralf_90 hat geschrieben:Ich habe den Fehler gefunden und behoben: Wenn aus einem LineEdit der eingegebene Text mittels .text() ausgelesen wird. so muss dieser Text zuerst mittels str() in einen String umgewandelt werden bevor die Methode strip() darauf angewendet wird. PyQt4 kennt anscheinend kein strip().
Ich konnte jetzt nicht nachschlagen, nehme aber stark an, dass LineEdit.text() einen QString zurückgibt, und der hat andere Methoden als ein Python-String. Leider ist zumindest von der Riverbankcomputing-Seite aus nur noch eine ziemlich unvollständige Dokumentation für PyQt4 zu haben, das ist ärgerlich. Für PyQt5 ist die "Class Reference", die hier zuständig wäre, weiterhin vorhanden. Umsteigen wäre eine Option, gerade wenn Du erst anfängst.
Was das Starten eines PyQt-GUI-Programms unter Windows betrifft: Starten aus der Kommandozeile sollte eigentlich Fehlermeldungen liefern, wenn das Programm nicht läuft. Ich kriege die aber immer nur, wenn ich den Python-Launcher benutze. Also nicht
D:\meinepythonskripte>zeugs.py
sondern
D:\meinepythonskripte>py -3 zeugs.py
Die erste Variante liefert bei einem hinreichend fehlerhaften Programm gar keine Reaktion. Verstehe ich nicht.
Re: Wie GUI öffnen?
Verfasst: Montag 17. April 2017, 21:08
von Sirius3
@bb1898: es kommt darauf an, mit was .py-Dateien unter Windows verknüpft sind. Wahrscheinlich bei Dir mit pythonw.exe, das kein Konsolenfenster benutzt und damit alle Tracebacks unsichtbar bleiben.
Re: Wie GUI öffnen?
Verfasst: Dienstag 18. April 2017, 18:44
von bb1898
Sirius3 hat geschrieben:@bb1898: es kommt darauf an, mit was .py-Dateien unter Windows verknüpft sind. Wahrscheinlich bei Dir mit pythonw.exe, das kein Konsolenfenster benutzt und damit alle Tracebacks unsichtbar bleiben.
Stimmt für die .pyw-Dateien, und so nenne ich meine GUI-Programme meistens. Mir war bisher nicht klar, dass pythonw.exe offensichtlich nicht nur kein Konsolenfenster öffnet, sondern nichts dorthin ausgibt, auch wenn es aus einem Konsolenfenster heraus gestartet wird. Wieder was gelernt, danke.