Python中文
首页
教程
问答
标签
搜索
登录
注册
如何制作PySide.QtCore.QTimer.singleShot调用其超时方法
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我正在开发一个复杂的基于Qt的Python应用程序。它雇佣了一个PySide.QtCore.QTimer.singleShot(int,slot)计时器延迟线程中插槽的执行,我对这个计时器的工作方式感到困惑。在</p> <p>这是一个MWE。本例使用了QThread子类化并重新实现run()的方法。我把以下内容放在一个名为计时器.py公司名称:</p> <pre><code>import PySide import time class SubClassThread(PySide.QtCore.QThread): def run(self): print('called SubClassThread.run()') self.delayed_print() def delayed_print(self): print('called SubClassThread.delayed_print()') PySide.QtCore.QTimer.singleShot(1000, self.print_things) time.sleep(2) print('end of delayed_print()') def print_things(self): print('called print_things') </code></pre> <p>我用来测试这个的代码(称之为<code>test.py</code>):</p> ^{pr2}$ <p><code>python test.py</code>的输出:</p> <pre><code>Test: QThread subclassing called SubClassThread.run() called SubClassThread.delayed_print() end of delayed_print() </code></pre> <p>奇怪的是单发QTimer似乎从未被调用(输出中没有<code>called print_things()</code>!)我将非常感谢你能澄清这一点。我觉得我缺少了Qt框架的一些简单成分。请原谅我-我确实花了几个小时寻找答案。在</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p><code>QThread.run()</code>的默认实现调用<code>QThread.exec()</code>,这将启动线程自己的事件循环。<code>QTimer</code>需要一个正在运行的事件循环,它的<code>timeout()</code>信号将在启动它的线程中发出。您的<code>run()</code>的实现不会启动事件循环,因此计时器将不执行任何操作。在</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
带json的Pass生成器(最好在MQTT上)
9 回答
带json的pythonFlask
9 回答
带json的Python传输代码
9 回答
带json的Python读取API
2 回答
带JSON约束的Android POST请求
8 回答
带Jupyter笔记本和Sp的Docker
7 回答
带Jupyter笔记本的IdeaVim
8 回答
带Jupyter笔记本的Matplotlib不会绘制绘图,但会更正轴值
1 回答
带kbhi套接字的Python线程
8 回答
带Keras fit_发生器的记忆错误
9 回答
带keras-给定错误的卷积神经网络,UnboundLocalError:local变量“a”在赋值之前引用
8 回答
带Keras和WGANs的无效argumenterror
5 回答
带Keras的LSTM:Assign Op的Input'ref'需要左值inpu
1 回答
带keras的解密器
9 回答
带KeyError的简单循环:8167
1 回答
带key和valu的Python二叉搜索树
6 回答
带Kivy ConfigPars的布尔函数等
8 回答
带kivy+matplotlib的Android.apk
3 回答
带kivy的可滚动注册屏幕
5 回答
带kivy的圆形/圆形图像
8 回答