wxpython设计GUI:报文发送线程正在运行时,点击右上角的窗口关闭按钮,界面卡死无响应

解决问题:报文发送线程正在运行时,点击右上角的窗口关闭按钮,界面卡死无响应。

原程序代码:

# 窗口关闭事件
self.Bind(wx.EVT_CLOSE, self.exit_sys)
def exit_sys(self, event):
    self.Destroy()
    sys.exit(1)

原程序代码只是设置了窗口关闭事件,并没有关闭正在运行的报文发送线程。

解决办法:在线程中自定义外部停止线程运行的函数

    def setFlag(self):  # 外部停止线程的操作函数
        self.Flag = False  # boolean

重新定义窗口关闭事件响应函数exit_sys()

    def close_link(self):
        close_state = close_device(self.working_can_device, self.working_can_channel)
        if close_state == 1:
            self.m_button2.SetLabel("开始")
            self.m_button2.Bind(wx.EVT_LEFT_DOWN, self.SendMsg)
            self.m_choice1.Enable()
            self.m_choice2.Enable()
            self.m_textCtrl1.Enable()
        else:
            mes_info = "断开can通信失败"
            toastone = wx.MessageDialog(None, mes_info, "信息提示",
                                        wx.YES_DEFAULT | wx.ICON_QUESTION)
            if toastone.ShowModal() == wx.ID_YES:  # 如果点击了提示框的确定按钮
                toastone.Destroy()  # 则关闭提示框

    def exit_sys(self, event):
        self.working_thread.setFlag()
        self.close_link()
        self.Destroy()
        sys.exit(1)
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Logintern09

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值