Seite 1 von 1
Mit Button andere Python Datei ausführen?
Verfasst: Donnerstag 4. Juni 2020, 10:52
von Neldela
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.
Code: Alles auswählen
from tkinter import *
from tkinter import ttk
root = Tk()
button1 = Button(text="öffnen", command=open'test2.py')
button1.pack()
root.mainloop()
Re: Mit Button andere Python Datei ausführen?
Verfasst: Donnerstag 4. Juni 2020, 10:55
von Jankie
Warum packst du nicht alles in eine Datei?
Re: Mit Button andere Python Datei ausführen?
Verfasst: Donnerstag 4. Juni 2020, 11:17
von Sirius3
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.
Code: Alles auswählen
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()
Re: Mit Button andere Python Datei ausführen?
Verfasst: Donnerstag 4. Juni 2020, 11:27
von Neldela
Der Code war nur ein Test für das eigentliche Script.
Ich bin derzeit dabei ein Interface für die Raspberry HQ Camera zu bauen.
Das zweite Fenster soll nicht nur eine MessageBox sondern ein eigenständiges Fenster sein (ein anderer Kamera Modus)
Für die Funktionalität der Kamera ist es ausschlaggebend dass nicht beide Programme gleichzeitig laufen.
Gibt es keine Möglichkeit von einem Programm aus ein anderes zu starten und sich dann anschließend zu schließen?
Re: Mit Button andere Python Datei ausführen?
Verfasst: Donnerstag 4. Juni 2020, 11:31
von __blackjack__
@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.
Re: Mit Button andere Python Datei ausführen?
Verfasst: Donnerstag 4. Juni 2020, 11:33
von __deets__
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.
Re: Mit Button andere Python Datei ausführen?
Verfasst: Donnerstag 4. Juni 2020, 11:34
von peterpy
Hallo Nedela,
Sirius3 war schneller.
Wenn ich dich richtig verstanden habe, willst Du ein anderes Modul aufrufen.
Auch wenn's bequem ist; bitte vergiss die Sternchenimporte!
Code: Alles auswählen
#!/usr/bin/env python3 -u
# -*- coding: utf-8 -*-
# Python Version 3.7
#Modul test1.py
from tkinter import Tk as tk
from tkinter import ttk
import test2
def main():
root = tk()
button1 = tk.Button(text="öffnen", command = oeffne_test2)
button1.pack()
root.mainloop()
def oeffne_test2():
ausfuehre_test2 = test2#
if __name__ == '__main__':
main()
Hier das Modul test2.py
Code: Alles auswählen
#!/usr/bin/env python3 -u
# -*- coding: utf-8 -*-
# Python Version 3.7
# Modul test2.py
print("Test 2 geöffnet")
Gruss
Peter
Re: Mit Button andere Python Datei ausführen?
Verfasst: Donnerstag 4. Juni 2020, 12:08
von Sirius3
@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.
Re: Mit Button andere Python Datei ausführen?
Verfasst: Donnerstag 4. Juni 2020, 12:18
von peterpy
@Sirius3, ja ich sollte nicht ungetestet absenden.
Code: Alles auswählen
import tkinter as tk
from tkinter import ttk
import test2
Modul test1
def main():
root = tk.Tk()
button1 = tk.Button(root, text="öffnen", command = oeffne_test2)
button1.pack()
root.mainloop()
def oeffne_test2():
ausfuehre_test2 = test2# Instanziere test2
ausfuehre_test2.ausfuehre_modul2()
if __name__ == '__main__':
main()
Modul test2
Re: Mit Button andere Python Datei ausführen?
Verfasst: Donnerstag 4. Juni 2020, 12:32
von Neldela
Ich habe jetzt eine Methode gefunden die für meine Zwecke funktioniert.
Danke für alle Antworten!
Re: Mit Button andere Python Datei ausführen?
Verfasst: Donnerstag 4. Juni 2020, 14:00
von Sirius3
@Neldela: es ist ja nicht so, dass wir hier helfen möchten. Aber mach nur so wie Du denkst und werd glücklich damit.
Re: Mit Button andere Python Datei ausführen?
Verfasst: Donnerstag 4. Juni 2020, 15:03
von peterpy
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