如何使用tkinter和多个脚本退出python应用程序

时间:2013-08-03 20:26:10

标签: python tkinter python-multithreading

所以我坚持使用tkinter这个小问题。我创造了一个有两个按钮的gui。按钮A附加到一个调用python文件的函数,该文件是一个永远运行的巨大脚本。

def startbot():
    subprocess.call("xxx.pyw",shell=True)

按钮B附加到名为close的函数,该函数执行root.quit()

任何熟悉tkinter的人都知道我接下来要说的是当我点击按钮A,tkinter冻结并且我无法点击按钮B.我相信这是由于tkinter和线程有关然而我不是非常熟悉这个主题,我想知道如何解决这个问题?假设我可以解决这个问题,但我还有一个问题。如果我能够点击按钮B那么只关闭tkinter还是会停止按钮A的功能和tkinter?

1 个答案:

答案 0 :(得分:1)

如果我是你,我会使用subprocess.Popen

from Tkinter import Tk, Button
from subprocess import Popen

root = Tk()

def start():
    global process
    process = Popen("python /path/to/file")

def stop():
    # Uncomment this if you want the process to terminate along with the window
    # process.terminate()
    root.destroy()

Button(root, text="Start", command=start).grid()
Button(root, text="End", command=stop).grid()

root.mainloop()

当您按Start时,脚本将启动而不会冻结GUI。按End将破坏窗口但保持脚本运行(除非您取消注释该行)。