Tkinter 一键多命令

Tkinter one button multiple commands

这不是完整的代码,只是我试图开始工作的片段。

我应该警告,我仍处于 Python 的学习阶段,所以如果您看到任何奇怪的东西,这就是原因。

我正在使用 Tkinter 设计一个 GUI,我希望按下一个按钮即可同时启动一些命令。

为了详细说明这个程序的作用,它启动了一个 iperf 客户端,然后同时捕获 telnet 读数。我在 bash 工作中得到了很好的概念证明,但是使用 tkinter 我似乎只能在第一个已经完成后立即开始。在编译器下面使用 lambda 方法仍然会报错:

TypeError: () 恰好接受 1 个参数(给定 0)

    self.iperfr = Button(frame, text="---Run---",command = lambda x:self.get_info() & self.telnetcap()) 
    self.iperfr.pack(side=BOTTOM)


    def get_info():

    iperf= self.iperfc.get()
    time = self.timeiperf.get()
    iperfcommand= 'iperf -c 127.0.0.1 -y c -i 1  {}'.format(iperf)+ ' -t {}'.format(time)
    print iperfcommand      
    os.system(iperfcommand)

    def telnetcap():

    n=0 


    time = self.timeiperf.get()

    child=pexpect.spawn('telnet 192.168.2.1');
    child.logfile = open("/home/alex/Desktop/Test", "w")
    child.expect('Login:');
    child.sendline('telnet');

    child.expect('Password:');
    child.sendline('password');

    while (n<time):
        child.expect('>');
        child.sendline('sh');

        child.expect('#') ;
        child.sendline ('sysinfo');

        child.expect ('#');
        child.sendline ('iostat');
        child.expect ('#');
        child.sendline ('exit');

        n=n+1
        print n

在这一点上,我觉得从这个 Python GUI 中实际调用我原来的 bash 脚本可能更容易。这看起来很微不足道,但我正在努力让它发挥作用。 bash 中简单的“&”正是我想要它做的。这个有 Python 版本吗?

谢谢!

感谢 Martineau 为我指明了正确的方向。线程绝对是要走的路。通过将我的 "run_all" 按钮分配给指定用于启动单个线程的函数,效果很好。

def run_all(self):
    thread.start_new_thread(self.telnetcap, ())
    thread.start_new_thread(self.get_info, ())