0
我知道这个问题已经被问过很多次在后台运行的东西。不幸的是,没有任何答案能解决我的目的。我有一个代码将持续在一个while循环中ping并检查连通性。 ping应该实例化的频率是从用户那里获得的。除非用户关闭应用程序,否则这个ping永远不会结束。UI在Tkinter的冻结,同时我在while循环
我有2类,一个用于UI,另一个用于动作来完成。
下面是示例代码。
class Net:
def main(self,interval):
try:
while thread1.is_alive():
p = subprocess.Popen("Do something like ping",
stdout = PIPE,
stderr = PIPE) #--> This is definitely required
except KeyboardInterrupt as e:
print "Exiting", e
class UI:
def __init__(self,* args, **kwargs):
tk.Tk.__init__(self, *args, **kwargs)
self.wm_title("Network Test")
self.geometry('250x75')
self.resizable(width = False, height = False)
self.label = tk.Label(text = "Frequency(seconds)")
self.label.grid(row = 0, column = 0)
self.entry = tk.Entry(bd = 5)
self.entry.grid(row = 0, column = 1)
self.button = tk.Button(text = "Start Test", command = self.callthread)
self.button.grid(row = 1, column = 0)
self.button1 = tk.Button(text = "Stop Test")
self.button1.grid(row = 1, column = 1)
self.mainloop()
def callthread(self):
print "Inside Call thread"
n = NetTest()
thread2 = threading.Thread(target = n.main(int(self.entry.get())))
#thread2.setDaemon(True)
thread2.start()
if __name__ == "__main__":
thread1 = threading.Thread(target = MyUI)
thread1.start()
#print threading.activeCount()
我试图运行它们的线程,但在vain.Perhaps我已经错误地执行线程。应用程序做它应该做的事情。唯一的问题是用户界面挂起,而我也尝试过使用后。这没有帮助。任何帮助将不胜感激。
TIA