所以我坚持使用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?
答案 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
将破坏窗口但保持脚本运行(除非您取消注释该行)。