我真的迷路了...我打开一个带有两个按钮的窗口,当你点击名为“注册一些按键”的按钮时,它会运行名为registerSomeKeyPresses.py的脚本,BUUUUT一旦完成我想关闭那个执行,但保持第一个窗口显示......这对我来说是不可能的......
拜托,我真的很感激任何帮助...
谢谢!
#!/usr/bin/env python
from Tkinter import *
import threading
v0 = Tk()
def finishApplication(): v0.destroy()
def registerSomeKeyPresses():
t = threading.Thread(target=execfile("registerSomeKeyPresses.py"))
t.start()
def waitAndRun(f): v0.after(200, f)
b1=Button(v0,text="TERMINAR APLICACION",command=lambda: finishApplication()).pack()
button_keyPresses=Button(v0,text="REGISTER SOME KEY PRESSES",command=lambda: waitAndRun(registerSomeKeyPresses())).pack()
v0.mainloop()
================ registerSomeKeyPresses.py =========================== < / p>
Do several things and last command:
io.quit()
答案 0 :(得分:0)
修改1
第二次尝试作为对您评论的回复:
from Tkinter import *
from subprocess import call
import sys
t = Tk()
def click():
t.iconify()
try:
call([sys.executable, 'script.py'])
finally:
t.deiconify() # if it should close do t.quit() and t.destroy()
b = Button(t, command= click)
b.pack()
t.mainloop()
旧版
这是做什么的?
================ registerSomeKeyPresses.py =========================== < / p>
v0.quit()
v0.destroy()
io.mainloop()
另一个错误是:
threading.Thread(target=execfile, args = ("registerSomeKeyPresses.py",))
如果你真的需要一个线程。
永远不要将tkinter mainloop事物与线程混合在一起。线程可以使用event_generate
- 这是安全的。
答案 1 :(得分:0)
当您销毁Tk
的实例时,您的程序将(并且应该)退出。如果要创建和销毁窗口,请在保持主窗口活动的同时创建并销毁Toplevel
的实例。如果您不想看到主窗口,可以隐藏它。
此外,tkinter和线程不能很好地混合。您无法从另一个线程调用任何窗口小部件上的任何方法。我听说其他人说你可以从另一个线程调用event_generate,但我认为这是你可以从另一个线程调用的唯一的 tkinter函数。