Python GUI在不同的shell中同时运行多个命令行

时间:2015-02-03 07:15:38

标签: python multithreading shell user-interface subprocess

我想通过使用python GUI单击不同的按钮来运行多命令行?

例如我有button1和button2,当我点击button1时,命令行将被执行,当我按下button2时,应该打开另一个shell并运行新的命令行,并停止使用。

我读到了它,但我找不到合适的代码

我写的内容如下:

   class Application(Frame):
    """A GUI """
    def __init__(self,master):
    Frame.__init__(self,master)
    self.grid()
    self.create_widgets() 

def create_widgets(self):
    #create first button 
    self.button = Button(self, text="roscore", command=self.roscore)    
    self.button.grid()

    #create first button 1
    self.button1 = Button(self, text="rqt plot", command=self.open_rqt) 
    self.button1.grid()




def open_rqt(self):
    call(["rosrun", "rqt_plot", "rqt_plot"])

def roscore(self):
    call(["roscore"])




root = Tk()  
root.title("GUI") 
root.geometry("1000x1000") 
app = Application(root)
root.mainloop() 

1 个答案:

答案 0 :(得分:0)

subprocess.call()等待命令完成。不要在command回调中使用它:它会使GUI无响应 - 所有内容都会冻结,直到call()返回。

为避免阻止GUI,您可以使用subprocess.Popen()代替子进程启动后立即返回。

如果要在新的终端窗口中运行每个命令;见Execute terminal command from python in new terminal window?