我有一个线程计时器,每60秒运行一次函数并将字符串打印到文本框
def devPresent(self):
stdout = self.deviceExists()
exists = self.exactMatch(stdout, "device")
if "device" in str(exists):
self.progressBox.AppendText('TEST STILL HERE\n')
else:
self.progressBox.AppendText('Device connection lost\n')
self.rstBtn()
t = threading.Timer(60, self.devPresent)
t.start()
所以这个工作并且TEST STILL HERE会打印到progressBox,但是当我用下面的def关闭窗口时,它关闭了主窗口,但是另一个窗口弹出并冻结。
def closeWindow(self,e):
t = self.devPresent
t.cancel()
time.sleep(3)
self.Destroy()
我是否错误地关闭了帖子?
答案 0 :(得分:0)
t
won't be visible between class methods unless you make it an attribute of self
. Try:
def devPresent(self):
stdout = self.deviceExists()
exists = self.exactMatch(stdout, "device")
if "device" in str(exists):
self.progressBox.AppendText('TEST STILL HERE\n')
else:
self.progressBox.AppendText('Device connection lost\n')
self.rstBtn()
self.t = threading.Timer(60, self.devPresent)
self.t.start()
def closeWindow(self,e):
self.t.cancel()
time.sleep(3)
self.Destroy()