Python 关闭一个窗口并在另一个窗口中继续执行?

Python 关闭一个窗口并在另一个窗口中继续执行?,python,multithreading,tkinter,Python,Multithreading,Tkinter,我真的迷路了…我打开一个有两个按钮的窗口,当你点击“注册一些按键”按钮时,它会运行一个名为registersomekeypresss.py的脚本,buuut一旦完成,我想关闭执行,但保持第一个窗口显示…这对我来说是不可能的 求求你,我真的非常感谢你的帮助 谢谢 #!/usr/bin/env python from Tkinter import * import threading v0 = Tk() def finishApplication(): v0.destroy() def regi

我真的迷路了…我打开一个有两个按钮的窗口,当你点击“注册一些按键”按钮时,它会运行一个名为registersomekeypresss.py的脚本,buuut一旦完成,我想关闭执行,但保持第一个窗口显示…这对我来说是不可能的

求求你,我真的非常感谢你的帮助

谢谢

#!/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()
===================注册表somekeypresss.py===========================

Do several things and last command: 

io.quit()
v0.quit()
v0.destroy()
io.mainloop()

编辑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()
旧版本

那有什么用

===================注册表somekeypresss.py===========================

Do several things and last command: 

io.quit()
v0.quit()
v0.destroy()
io.mainloop()
另一个错误是:

threading.Thread(target=execfile, args = ("registerSomeKeyPresses.py",))
如果你真的需要一根线。
千万不要把tkinter mainloop的东西和线程混在一起。线程可以使用
event\u generate
-这是安全的。

当您销毁
Tk
的实例时,您的程序将(并且应该)退出。如果要创建和销毁窗口,请在保持主窗口活动的同时创建和销毁
Toplevel
的实例。如果不想看到主窗口,可以将其隐藏


另外,tkinter和线程的混合也不是很好。您不能从另一个线程对任何小部件调用任何方法。我听其他人说,您可以从另一个线程调用event_generate,但我认为这是您可以从另一个线程调用的唯一tkinter函数。

这里讨论了这一点:嗨!似乎有了Tk和Toplevel的一个实例,我就可以做到这一点,对吗?3) 一旦.py完成,我想用按钮返回窗口---我不知道怎么做——我试着用这种方式做,但我要再试一次。谢谢@玛丽:你必须有一个Tk实例,在你准备好退出程序之前,你不应该销毁它。一旦你有了它,如果你想让窗口出现和消失,请使用Toplevel的实例。嗨!感谢您的反馈,问题是我清楚地知道我想做什么,但我不知道如何实现它,这就是为什么我可能误用了thread/tkinter。。。我想做的是:1)显示一个带有按钮的窗口。每次你点击一个按钮,就会调用一个external.py。2)执行external.py,显示所有屏幕。3) 一旦.py完成,我想用按钮返回窗口---我不知道怎么做——谢谢!你可以改进你的问题。这也会帮助其他人。