2 Programme mit Tkinter

Fragen zu Tkinter.
Antworten
Tux
User
Beiträge: 70
Registriert: Freitag 8. November 2002, 23:07
Kontaktdaten:

Samstag 11. Januar 2003, 14:18

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
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Samstag 11. Januar 2003, 15:30

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
Tux
User
Beiträge: 70
Registriert: Freitag 8. November 2002, 23:07
Kontaktdaten:

Samstag 11. Januar 2003, 17:21

Hi Dookie!

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

Danke

ICH
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Sonntag 12. Januar 2003, 17:01

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
Zuletzt geändert von Dookie am Montag 13. Januar 2003, 03:43, insgesamt 1-mal geändert.
Tux
User
Beiträge: 70
Registriert: Freitag 8. November 2002, 23:07
Kontaktdaten:

Sonntag 12. Januar 2003, 21:42

Hi Dookie!

Danke! Funtioniert ausgezeichnet!

ICH
Antworten