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, ())
这不是完整的代码,只是我试图开始工作的片段。
我应该警告,我仍处于 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, ())