能够在进程运行时在基于python的gui中选择一个按钮

时间:2017-06-05 09:50:43

标签: tkinter

我是python的新手,我一直想用python tkinter运行一个可执行文件,通过按下一个按钮,可执行文件将使用os.system运行并通过按下另一个按钮来停止它我已经编写了ac代码来停止可执行文件使用kill命令并在python gui中运行可执行文件,但是一旦进程运行无法单击其他按钮。如果要停止它,我已经粘贴了下面的代码,请帮我解决这个问题

from Tkinter import * 
import os
import sys

def init():
    os.system('./a.out')


def lena():
    os.system('./test')

WINDOW_W = 300
WINDOW_H = 80

def createDisplay():
 global tk
 global btn
 # create the tk window - within which
 # everything else will be built.
 tk = Tk()
  #Add a canvas area ready for drawing on
 canvas = Canvas(tk, width=WINDOW_W, height=WINDOW_H)
 canvas.pack()
 #Add an exit button
 btn = Button(tk, text="lena", command=lena)
 btn.pack()

 btn1 = Button(tk, text="optimist", command=lambda:os.system('./optimist'))
 btn1.pack()
 btn2 = Button(tk, text="text",command=init)
 btn2.pack()
 btn3 = Button(tk, text="exit", command=terminate)
 btn3.pack()
 # Start the tk main-loop (this updates the tk display)
 tk.mainloop()

def terminate():
 global tk
 tk.destroy()

def main():
 createDisplay()

if __name__ == '__main__':
 main()

1 个答案:

答案 0 :(得分:0)

os.system是一个阻塞函数,在你调用的命令完成之前,程序中不会发生任何其他事情。

考虑使用subprocess代替

import subprocess
subprocess.Popen('./test')

使用子进程,您调用的脚本将作为单独的进程在后台运行。