Hallo, ich möchte bei einem Klick auf einen Button automatisch eine neue Python Datei (test2.py) starten die ebenfalls ein Fenster öffnet und danach das bisherige Fenster schließen.
Ich habe es mit dem folgenden versucht, hat aber natürlich nicht funktioniert.
Man schreibt keine Programme, die andere Python-Programme ausführen, das packt man alles in einen Aufruf. Hier fehlt auch noch viel Kontext. Bisher macht das Fenster mit einem Knopf keinen Sinn. Das wäre kein eigenständiges Programm, sondern nur eine MessageBox, mit irgendeiner Nachricht, die verhindert, dass das eigentliche Programm (test2) losgeht.
import tkinter as tk
from tkinter.messagebox import showinfo
def main():
root = tk.Tk()
root.iconify()
tkinter.messagebox.showinfo("Öffnen", "gleich geht es weiter")
root.deiconify()
# hier geht es dann mit dem, was in test2 steht weiter
if __name__ == '__main__':
main()
@Neldela: Die Möglichkeit gibt es, die ist aber nicht der normale, richtige Weg. Und es ging ja nicht um das zweite Fenster als MessageBox, sondern um das erste. Da wo Sirius3 den Kommentar im Quelltext stehen hat, kann dann ja ein Fenster mit beliebigem anderen Inhalt programmiert werden. Beziehungsweise kann man da ja auch vorher schon das `root`-Objekt mit Inhalt füllen. Das wird dann ja nach der MessageBox wieder angezeigt.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Ich glaube das nicht. Was ist der genaue technische Grund, weshalb nicht beide Programme gleichzeitig laufen koennen? Und wenn das wahr waere, dann ginge es so ja auch nicht - denn du startest test2 bevor dieses Programm beendet ist. Notwendigerweise laufen die also fuer einen Moment gleichzeitig. Und es ist auch nicht garantiert, wie lange das ist.
Sirius3 war schneller.
Wenn ich dich richtig verstanden habe, willst Du ein anderes Modul aufrufen.
Auch wenn's bequem ist; bitte vergiss die Sternchenimporte!
@peterpy: es wäre ungewöhnlich die Tk-Klasse tk zu nennen, die hat auch gar kein Button-Attribut.
`oeffne_test2` nacht auch nichts sinnvolles, denn ein Modul an eine lokale Variable zu binden, ist schon an sich komisch, dann aber nichts damit zu machen noch mehr. Der Code in test2 wird schon beim Import ausgeführt.
Hallo Sirius3,
ich finde es gut, wenn jemand eine Lösung findet.
Es wird auch nicht erwartet, die Lösung zu veröffentlichen.
Jedenfalls hat sich Neldela bedankt, das ist doch schon anständig.
Es gibt viele, die lassen nichts mehr von sich hören.
Gruss Peter