这不是完整的代码,只是我试图开始工作的片段。
我应该警告,我还处于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版本?
谢谢!
答案 0 :(得分:1)
感谢Martineau指出我正确的方向。线程绝对是要走的路。通过将我的“run_all”按钮分配给指定用于启动单个线程的函数,它可以很好地工作。
def run_all(self):
thread.start_new_thread(self.telnetcap, ())
thread.start_new_thread(self.get_info, ())