最近使用wxpython开发上位机软件,因为要实时读取显示plc数据,所以使用wxpython的定时器,
在这个窗口显示出来时,这个当前值的定时器开始执行,因为使用下面这段代码设置输入框内容,导致窗口关闭时会导致主窗口也关闭闪退,出现Process finished with exit code -1073741819 (0xC0000005)
self.ElectricNowValue.SetValue
分析后发现主要是因为当窗口显示的时候,定时器开始执行,一直读取plc的数据,self.ElectricNowValue.SetValue去设置里面的值,但当窗口关闭时,这个获取plc数据的定时器还在执行,self.ElectricNowValue.SetValue这段代码也还在执行,所以导致设置数据时页面没有这个元素属性,导致访问冲突。
解决办法 给Frame窗口的关闭按钮绑定一个关闭事件,在这个关闭事件里执行关闭定时器的操作即可解决这个问题。代码如下
def FrameCloseEvent(self, event):
"""
创建关闭事件处理
"""
# 关闭定时器
self.CurrentValueTimer.Stop()
# 关闭窗口
self.Destroy()
有需要的可以看看这个
[]([WxPython]进程已完成,退出代码为 -1073741819 (0xC0000005) (python-forum.io))