Wie GUI öffnen?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Ralf_90
User
Beiträge: 9
Registriert: Mittwoch 12. April 2017, 14:28

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.
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.
Ralf_90
User
Beiträge: 9
Registriert: Mittwoch 12. April 2017, 14:28

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?
BlackJack

@Ralf_90: Im Kommandozeilenfall, was bedeutet „klappts auch nicht” denn genau? Da muss dann ja irgendeine Fehlermeldung kommen — welche?
Ralf_90
User
Beiträge: 9
Registriert: Mittwoch 12. April 2017, 14:28

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().
bb1898
User
Beiträge: 200
Registriert: Mittwoch 12. Juli 2006, 14:28

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.
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

@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.
bb1898
User
Beiträge: 200
Registriert: Mittwoch 12. Juli 2006, 14:28

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