wxpython中如何按键停止死循环?

CSDN问答 2021-10-26 21:06:08
循环 死循环 wxpython 按键 停止

目前点击stop按钮就卡死,无法实现停止循环

# coding:utf-8import wximport threadingimport timethreadLock = Trueclass AvoidObs(threading.Thread): def __init__(self): threading.Thread.__init__(self) def run(self): print("开启线程:" + self.name) self.startavoid() print("关闭线程:" + self.name) def startavoid(self): count = 0 while threadLock: count += 1 time.sleep(1) print(count) def stopavoid(self): global threadLock threadLock = False print("结束运动")t = AvoidObs()class MyFrame(wx.Frame): def __init__(self): super().__init__(None, title='ClickFarming V1.0T', size=(250, 180)) # 窗口标题栏 panel = wx.Panel(parent=self) # 创建面板,传递self(让当前窗口为面板的父类) self.b1 = wx.ToggleButton(parent=panel, label='START', pos=(100, 50)) # 创建按钮 self.Bind(wx.EVT_TOGGLEBUTTON, self.__on_click, self.b1) # 绑定事件 self.i = 0 self.__stopped = False # 创建垂直方向的盒子布局管理器对象 vbox = wx.BoxSizer(wx.VERTICAL) # 添加按钮b到vbox布局管理器 vbox.Add(self.b1, proportion=1, flag=wx.ALIGN_CENTRE_HORIZONTAL | wx.SHAPED | wx.BOTTOM, border=10) # 设置面板panel采用vbox布局管理器 panel.SetSizer(vbox) def __on_click(self, event): self.i += 1 if self.i % 2 != 0: self.b1.SetLabel('STOP') time.sleep(1) t.run() print("死循环") else: self.b1.SetLabel('START') t.stopavoid()if __name__ == '__main__':# 创建应用程序对象 app = wx.App()# 创建窗口对象 frm = MyFrame()# 显示窗口 frm.Show()# 进入主事件循环 app.MainLoop()



参考答案1:

你的输入呢,你是想输入个字符串然后停止循环,还是你按一下stop,就停止循环了?




参考答案2:



参考答案3:

题主的代码,即使不点击停止按钮,只要点击了开始,GUI线程就已经被全局的线程对象阻塞了。也许题主对于GUI主线程的地位理解有误,我的建议是:所以的子线程均应置于GUI主线程的管理之下。略微修改了一下题主的代码,可以正常运行了。

# coding:utf-8 import wximport threadingimport timeclass MyFrame(wx.Frame): def __init__(self): super().__init__(None, title='ClickFarming V1.0T', size=(250, 180)) panel = wx.Panel(parent=self) self.b1 = wx.ToggleButton(parent=panel, label='START', pos=(100, 50)) self.Bind(wx.EVT_TOGGLEBUTTON, self.__on_click, self.b1) self.i = 0 self.__stopped = False # 此属性未使用 self.running = False vbox = wx.BoxSizer(wx.VERTICAL) vbox.Add(self.b1, proportion=1, flag=wx.ALIGN_CENTRE_HORIZONTAL | wx.SHAPED | wx.BOTTOM, border=10) panel.SetSizer(vbox) def __on_click(self, event): """启动或停止线程""" self.i += 1 if self.i % 2 != 0: self.running = True th = threading.Thread(target=self.do_something) th.start() self.b1.SetLabel('STOP') else: self.running = False self.b1.SetLabel('START') def do_something(self): """线程函数""" count = 0 while self.running: count += 1 time.sleep(1) print(count) if __name__ == '__main__': app = wx.App() frm = MyFrame() frm.Show() app.MainLoop()



参考答案4:
版权声明
本文为[CSDN问答]所创,转载请带上原文链接,感谢
https://ask.csdn.net/questions/7545155

  1. Python 的 f-strings,远比你想象的要强大!
  2. django channels channel_layer.group_send 造成内存溢出
  3. 判断天数问题用python 解决 不知道自己哪里写错了 一直显示invalid syntax
  4. OpenCV-Python对比度受限的自适应直方图均衡CLAHE知识介绍
  5. pandas 如何读取指定位置和数量的列
  6. django后台模型中的文件字段,上传后再下载时提示找不到页面
  7. 关于#python#的问题:使用requests请求网页时出现网页过期是怎么回事啊,cookie也没有过期,也提交了头文件的
  8. Pycharm开发Django项目外键和表关系
  9. [PYTHON][BAT][SHELL] 常见易忘 python、bat、shell 脚本操作汇总(持续更新)
  10. django学习-34.【多对多】表关系对应的完整业务操作
  11. 在GitHub上下载了一个python代码,看readme很疑惑,求解答
  12. 怎么用python程序做这问题
  13. python程序设计实验4-程序的异常处理
  14. 【Python每日作业】Day7: 如何在一个表达式里面合并两个字典?
  15. Python Type Hints 从入门到实践
  16. pyinstaller 打包 exe 无法在没有装python的电脑上运行,提示如下。。
  17. 关于Python中的Image. open函数的使用出现的问题
  18. 代码0基础先学哪个?WEB、python、JAVA
  19. Python基于PCANBasic二次开发使用方法
  20. Python实现相加为奇数则用户赢,如果并且用户能自行选择退出游戏,且计算他们的分数
  21. python编写程序, 先输入一组10个元素,再输出数组中比平均值小的所有奇数。
  22. 《用python写网络爬虫》完整版+源码
  23. python中的小问题,友友们来看一下
  24. python自定义函数CircleArea求圆面积
  25. 判断年月日问题python 不知道自己哪里写错了
  26. 关于Python语言表达的问题
  27. Python代码阅读(第23篇):将变量名称转换为短横线连接式命名风格
  28. Python 用ARIMA、GARCH模型预测分析股票市场收益率时间序列
  29. 云计算开发:Python3-encode()方法详解
  30. python编写程序自动计算个人总分平均分各科最高最低平均分
  31. 在不同python版本下的python代码可以集成到一个应用中吗?
  32. 吹弹牛皮之Unity 工具制作常用交互bat ini python
  33. 手动新建和pycharm新建Djagno项目时候,Django项目的文件夹和虚拟环境文件夹venv的位置有所不同
  34. python课提的求解答一下,是什么意思
  35. python画图X轴太密集了,为什么加了代码也没用
  36. 用PYTHON实现EXCEL数据改动的cell高亮显示
  37. Python Type Hints 从入门到实践
  38. 求一个python大大( •︠ˍ•︡ )(想哭)如果可以的话可以开课,我可以去听课
  39. 真香!值得收藏的30道Python练手题(附详细答案)
  40. django+uwsgi+nginx 前后端分离部署配置
  41. 用python实现千图成像工具,快给你的男/女神弄一张吧~
  42. python csv中dwlimiter用不了,有没有大咖能解释一下
  43. 新手学Python要打好哪些基础?从软件安装到全面基础讲解,就它了!
  44. Python中字符串子串的输出
  45. python判断是否一个序列是超增序列
  46. Python爬虫框架的读取和创建
  47. python对数据框中两列进行判断, 得到新的列的
  48. Python做一个模仿文本进度条的编程
  49. python 中使用MS SQL问题 怎样解决
  50. python有没有类似传送门功能的代码,,就是比如这边运行完然后输入一些指令然后可以跳转到程序里的某个地方
  51. Python基操教学!不会?(熟能生巧)
  52. python画图,有没有初学者的代码
  53. 朋友股票亏惨了,我一怒用Python爬取了证券最新数据
  54. 被称之为永远的神!就这6个Python爬虫开源项目?
  55. python Qtreeview 如何选择子行,选择第一行下面的行数
  56. Python随机生成100个1~200之间的不重复数字
  57. 关于#python#的问题,请各位专家解答!
  58. Python编写程序先输入一组10个元素,再输入数组中比平均值小的所有奇数
  59. Ubuntu终端下安装Python需要import的库
  60. 为什么下载pandas和xlwings运行不了,出现No system module pywintypes(系统查不到pywin32具体位置)(又不能重新下载pywin32)