Seite 1 von 1

2 Programme mit Tkinter

Verfasst: Samstag 11. Januar 2003, 14:18
von Tux
Hi @ll!

Hier mein Problem (stark vereinfacht):
2 Pythonprogramme im Tkinter geschrieben:
Das 1. Programm soll 2 Buttons haben -
1. Button : Beenden!
2. Button : Programm 2 öffnen und Programm 1 schließen!

Beim 2. Programm reicht erstmal ein Beendenbutton!

Ich weiß nicht, wie ich es schaffe, dass sich nach dem starten des 2. Programms durch klicken auf den Button das 1. Programm schließe!

Es sieht bisher so aus:
1.Programm:

Code: Alles auswählen


import Tkinter
from Tkconstants import *

tk=Tkinter.Tk()
frame=Tkinter.Frame(tk)
frame.pack()

def ok():
	import testprogramm

b1=Tkinter.Button(frame,text="Beenden",command=tk.destroy)
b1.grid(row=1,column=2)
b2=Tkinter.Button(frame,text="ok",command=ok)
b2.grid(row=1,column=1)

Tkinter.mainloop()
Programm 2:

Code: Alles auswählen

#testprogramm.py
import Tkinter
from Tkconstants import *

tk=Tkinter.Tk()
frame2=Tkinter.Frame(tk)
frame2.pack()
b1=Tkinter.Button(frame2,text="Beenden",command=tk.destroy)
b1.grid(row=1,column=2)
Tkinter.mainloop()
Was muss ich bei ok ergänzen, sodass das 1. Programm geschlossen wird und nur das 2. geöffnet bleibt?

ICH

Verfasst: Samstag 11. Januar 2003, 15:30
von Dookie
Hi Tux,

also das 2. Programm nur zu importieren dürfte zu wenig sein, wenn musst du es schon mit exec oder was auch immer als eigenen Prozess laufen lassen. So wird Programm1 immer auf das Ende von Programm2 warten.

Gruß

Dookie

Wie geht das?

Verfasst: Samstag 11. Januar 2003, 17:21
von Tux
Hi Dookie!

Wie kann ich es denn als eigenen Prozess laufen lassen? Kannst du mir ein Beispielscript schreiben?

Danke

ICH

Verfasst: Sonntag 12. Januar 2003, 17:01
von Dookie
ich hab mich heute mal ein bisschen mit Deinem Code gespielt.

Programm 1:

Code: Alles auswählen

#!/usr/bin/env python
# teststarter.py

import os
import Tkinter
from Tkconstants import *

tk=Tkinter.Tk()
frame=Tkinter.Frame(tk)
frame.pack()

pfad_zum_Testprogramm = "/home/fritz/src/python/testprogramm.py" # Pfad Anpassen !!!

def ok():
    os.spawnlpe(os.P_NOWAIT, pfad_zum_Testprogramm, "", os.environ)
    

b1=Tkinter.Button(frame,text="Beenden",command=tk.destroy)
b1.grid(row=1,column=2)
b2=Tkinter.Button(frame,text="ok",command=ok)
b2.grid(row=1,column=1)

Tkinter.mainloop()
Programm2

Code: Alles auswählen

#!/usr/bin/env /usr/bin/python
#testprogramm.py
import Tkinter
from Tkconstants import *

tk=Tkinter.Tk()
frame2=Tkinter.Frame(tk)
frame2.pack()
b1=Tkinter.Button(frame2,text="Beenden",command=tk.destroy)
b1.grid(row=1,column=2)
Tkinter.mainloop()
so läufts zumindest unter Unix/Linux für win müsstest Du den Code bei der Funktion ok so abändern

Code: Alles auswählen

def ok():
    os.spawnlpe(os.P_DETACH, "python",  pfad_zum_Testprogramm, os.environ)
Das ist allerdings nicht getestet, da bei mir kein win läuft.


Gruß

Dookie

Danke

Verfasst: Sonntag 12. Januar 2003, 21:42
von Tux
Hi Dookie!

Danke! Funtioniert ausgezeichnet!

ICH