@rlinke81: Ich würde sagen aus einem Python-Programm aus (sogar mehrere) weitere Python-Programme mit `Popen` starten zu wollen ist ziemlicher Murks.
Ebenfalls falsch ist, dass es in diesem Programm zwei `Tk`-Objekte gibt. Das darf es nur einmal geben — das ist *das* Hauptfenster. Zusätzliche Fenster macht man mit `Toplevel`.
`ctypes.windll` wird verwendet um Fenster mit Nachrichten zu öffnen — dafür hat `tkinter` doch auch etwas was nicht von Windows abhängig ist. `Popen()` mit ``shell=True`` um einen Prozess zu beenden: das geht auch mit Python. Das ``shell=True`` ist besonders sinnfrei, weil das Kommando ja als Liste übergeben wird.
`os.path` in neuen Programmen? Es gibt `pathlib`. `resource_path()` wird dann auch eher überflüssig.
`strip()` ist vor `int()` unnötig, das macht `int()` selbst schon.
Sofern nicht irgendwo in der Dokumentation garantiert ist, dass man im `_MEIPASS` Verzeichnis schreiben darf, würde ich die Kommunikation der Programme über Textdateien dort als Fehler ansehen. Wirklich schön ist das sowieso nicht. Die "login_status.txt" scheint sinnfrei zu sein. Und die PID-Datei könnte man sich sparen wenn man sich den Prozess als Objekt merken würde und nicht einfach „fire and forget“ praktizieren würde.
Es gibt im Hauptfenster einen „Exit“-Button und einen „Beenden“-Button. Hä‽
`r` ist kein guter Name. Es wird nirgends geprüft ob bei dem Anfragen an den Server eine normale Antwort oder eine HTTP-Fehler-Seite kam.
Fenstergrössen fest vorgeben ist nicht richtig. Das kann funktionieren. Kann aber auch komisch aussehen oder sogar unbenutzbar sein.
Pyinstaller Onefile Frage zum _MEIPASS
- __blackjack__
- User
- Beiträge: 14377
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
Who is General Failure and why is he reading my hard disk?
- __blackjack__
- User
- Beiträge: 14377
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@rlinke81: Wie gesagt, hör einfach auf das zu wollen. Auch wenn das keine einzige EXE ist, macht man das nicht, aus dem eigenen Python-Programm andere eigene Python-Programme starten. Das ist ja letztlich *ein* Programm, also würde man die anderen Module importieren und die Funktionen zum starten einfach aufrufen. Wenn das auch GUI-Programme sind, dann in die gleiche `mainloop()` integrieren, und wenn das etwas ist was im Hintergrund läuft, in einem Thread starten.
Who is General Failure and why is he reading my hard disk?
