PyQt5 | Fenster wird nicht angezeigt

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
N4SONIC
User
Beiträge: 32
Registriert: Sonntag 28. Dezember 2014, 15:46

Hallo :)

Ich versuche mit PyQt5 ein Fenster zu erstellen, wenn ich es compiliere dann läuft es nur im Hintergrund.

Was mache ich falsch ? :?

Code: Alles auswählen

import sys
from PyQt5 import QtWidgets

if __name__ == "__main__":
	app = QtWidgets.QApplication(sys.argv)
	w = QtWidgets.QWidget()
	w.resize(300, 300)
	w.move(100, 100)
	w.setWindowTitle("Test")
	w.show()
	print("Fenster erstellt!")
	sys.exit(app.exec_())
Bild
BlackJack

@N4SONIC: Unter Windows muss das mit pythonw.exe ausgeführt werden. Dazu sollte es reichen, dass die Dateiendung *.pyw statt *.py ist.
N4SONIC
User
Beiträge: 32
Registriert: Sonntag 28. Dezember 2014, 15:46

BlackJack hat geschrieben:@N4SONIC: Unter Windows muss das mit pythonw.exe ausgeführt werden. Dazu sollte es reichen, dass die Dateiendung *.pyw statt *.py ist.
Habe es gemacht, wird bei mir auch im "Task Manager" als pythonw.exe angezeigt. Und die Datei habe ich als test.pyw gespeichert.

Woran könnte es noch liegen ? :?
__deets__
User
Beiträge: 14522
Registriert: Mittwoch 14. Oktober 2015, 14:29

Vielleicht hilft ein tatsächliches Window zu verwenden? Also QMainWindow statt ein Widget.

Ist aber nur geraten.
N4SONIC
User
Beiträge: 32
Registriert: Sonntag 28. Dezember 2014, 15:46

__deets__ hat geschrieben:Vielleicht hilft ein tatsächliches Window zu verwenden? Also QMainWindow statt ein Widget.

Ist aber nur geraten.
Hat auch nicht Funktioniert.
BlackJack

@N4SONIC: Hast Du eventuell mehrere Monitore und 100,100 liegt aus irgendwelchen Gründen ausserhalb des sichtbaren Bereichs eines virtuellen Desktops? Und das Programm muss ja auch in der Taskleiste auftauchen‽
N4SONIC
User
Beiträge: 32
Registriert: Sonntag 28. Dezember 2014, 15:46

BlackJack hat geschrieben:@N4SONIC: Hast Du eventuell mehrere Monitore und 100,100 liegt aus irgendwelchen Gründen ausserhalb des sichtbaren Bereichs eines virtuellen Desktops? Und das Programm muss ja auch in der Taskleiste auftauchen‽
Nein habe ich nicht. Und habe w.move auf 0 gesetzt sehe dann auch nichts. Es wird nicht mal unten an der Taskleiste angezeigt, aber im Task Manager unter Details.
bb1898
User
Beiträge: 200
Registriert: Mittwoch 12. Juli 2006, 14:28

Ich habe das Programm hier aus dem Code-Fenster kopiert ("Alles auswählen", Ctrl-C und dann in IDLE eingefügt). Jetzt habe ich ein Programm, das voll ist mit illegalen Zeichen (C2 A0 im Hex-Viewer). Ich vermute sehr stark, dass das eine einfache Folge des Kopierens aus dem Code-Fenster ist und mit dem Problem nichts zu tun hat. Richtig oder falsch?

Wenn ich diese Zeichen allerdings aus dem Programm entferne, läuft es brav, zeigt mir ein leeres Fenster mit dem Titel "Test" und wenn ich es aus IDLE oder vom Konsolenfenster aus starte, wird dort auch "Fenster erstellt!" ausgegeben.

Wie startest Du das Programm? (Und was meintest Du in Deinem ersten Beitrag mit "wenn ich es compiliere"?) Probiere auf jeden Fall mal den Start aus einer Eingabeaufforderung, am besten mit "py -3 test.pyw". Dann siehst Du ggf. die Fehlermeldungen.

@__deets__: Ein PyQt5-Programm muss kein QMainWindow haben, QWidget als einziges Fenster tut es auch, wenn man Menü und Statuszeile nicht braucht.

@BlackJack: .pyw ist doch nicht zwingend - man kriegt bei .py halt das Konsolenfenster, das stören kann; hier zeigt es aber sogar die Schlussmeldung an. Und solange man in der Testphase aus der Eingabeaufforderung heraus startet, ist es sowieso egal.
N4SONIC
User
Beiträge: 32
Registriert: Sonntag 28. Dezember 2014, 15:46

Was fär Zeichen meinst du ? Mit Compilieren meinte ich wenn ich das Programm starte.
bb1898
User
Beiträge: 200
Registriert: Mittwoch 12. Juli 2006, 14:28

Ich meine unsichtbare Zeichen, die im Hex-Viewer als C2 A0 dargestellt werden. Bemerkt habe ich das, weil beim ersten Ausführungsversuch unter IDLE eine entsprechende Fehlermeldung kam und das erste dieser Zeichen rot markiert wurde. Wie schon gesagt, ich würde eher annehmen, dass dieses Zeugs beim Kopieren aus dem Codefenster in meine Datei gekommen ist, dann müsste es Dich nicht interessieren. Nur, ohne das läuft das Programm bei mir.

Deshalb noch mal die Frage: wie startest Du das Programm? Aus einer Entwicklungsumgebung heraus (Dein Screenshot legt das nahe)? Durch Doppelklick im Explorer? Letzteres ist eine bewährte Methode, alle Fehlermeldungen eines GUI-Programms zu unterdrücken und dann rätseln zu müssen, warum nichts kommt. Ersteres sollte Fehlermeldungen nicht unterdrücken, aber nicht jede Entwicklungsumgebung verträgt sich mit jeder GUI-Bibliothek (tkinter und IDLE z.B. nicht).
N4SONIC
User
Beiträge: 32
Registriert: Sonntag 28. Dezember 2014, 15:46

Habe es über über Atom laufen lassen und es hat Funktioniert. Danke :)
Antworten