pyqt中如何实现类似死循环的功能?
Tofloor
poster avatar
kiscore
deepin
2014-04-10 19:06
Author
实例是这样的,我写了一个QT窗口,可以通过鼠标点击按钮触发一个动作。如果不手动点击按钮来触发的话,就可以在后台每5分钟执行一次这个动作。

就这个每5分钟来触发一次这个动作代码如何实现?用while True:  +  time.sleep()来做的话,while循环体之外的代码一律不执行了。

把while循环放在最后的话,只要不触发窗口关闭动作:sys.exit(app.exec_())这个代码之后的任何动作也不会执行。
放在sys.exit(app.exec_())  前面则窗口出不来!

用多线程来thread  while循环体的话,窗口出来后会很卡...


Deepin的开发大大们,我google了2天,搜索的关键词也许不对,一直没找到答案。

能否指点一二,感激不禁。
Reply Favorite View the author
All Replies
nohappiness
deepin
2014-04-10 19:12
#1
为什么多线程窗口会卡?不太明白
PS:不懂pyqt开发哈
Reply View the author
kiscore
deepin
2014-04-10 19:14
#2
为什么多线程窗口会卡?不太明白
PS:不懂pyqt开发哈

表现为:单机按钮,鼠标箭头转圈中,几秒钟后出现响应。效率很慢。勉强能跑起来的感觉。
Reply View the author
kiscore
deepin
2014-04-10 19:16
#3
为什么多线程窗口会卡?不太明白
PS:不懂pyqt开发哈

其实多线程就是:程序一会去执行下线程1,然后再去执行线程2,如此反复循环。所以,我觉得这个问题与监听事件有关,但是,初学者需要摸索下...
Reply View the author
a287740928
deepin
2014-04-10 20:55
#4
其实pyqt我也不懂,我看你第一段意思,我想的很简单,首先设置个计时器,每秒执行一次if语句,if语句内容为
if i<300
then i++;
else
你需要的程序;//到达5分钟需要执行的语句
如果你需要鼠标点击就清零计时器的话,就加个条件判断就应该可以了,不知道是不是你要的意思
Reply View the author
a287740928
deepin
2014-04-10 20:58
#5
qt里面有个qtimer
Reply View the author
kiscore
deepin
2014-04-10 21:26
#6
qt里面有个qtimer
hi~,非常感谢你的回复。
说明白点就是这个意思:
while True:
       print "11111"#这个只是个架设,实际调用一个函数。
       time.sleep(300)#休眠300秒然后无限循环。
跟鼠标点击没任何关系。鼠标点击就立即调用那个函数而已,点不点,循环体都一直运行。

好郁闷啊~!
Reply View the author
lovesnow
deepin
2014-04-10 21:43
#7
使用QTimer    8-)
Reply View the author
kiscore
deepin
2014-04-10 21:52
#8
使用QTimer    8-)
我试试哈。 ;)
Reply View the author
kiscore
deepin
2014-04-10 22:08
#9
感谢5楼7楼2位朋友的建议,也感谢2楼的回复!问题解决了!
就是Qtimer,谢谢大家!!敢问7楼是Deepin开发者么?
Reply View the author