Tkinter一键多个命令

时间:2015-01-09 03:35:20

标签: python tkinter

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

我应该警告,我还处于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脚本可能更容易。这似乎是微不足道的,但是我把头发拉出来试图让它发挥作用。简单&#34;&amp;&#34;在bash中完全按照我的意愿行事。是否有Python版本?

谢谢!

1 个答案:

答案 0 :(得分:1)

感谢Martineau指出我正确的方向。线程绝对是要走的路。通过将我的“run_all”按钮分配给指定用于启动单个线程的函数,它可以很好地工作。

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