Python中文
首页
教程
问答
标签
搜索
登录
注册
从继承的QThread迁移到Worker mod
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>所以在我之前的问题中通过了很多帮助 (<a href="https://stackoverflow.com/questions/37119319/interrupting-qthread-sleep">Interrupting QThread sleep</a> 并且<a href="https://stackoverflow.com/questions/37173560/pyside-passing-signals-from-qthread-to-a-slot-in-another-qthread">PySide passing signals from QThread to a slot in another QThread</a>)我决定尝试从继承的<code>QThread</code>模型更改为Worker模型。我在想我应该继续使用<code>QThread</code>模型,因为我已经有了它的工作,而另一个模型没有。然而,我不知道为什么工人模式不适合我。在</p> <p>我正在尝试这样做请让我知道,如果我的方法有什么固有的错误?在</p> <p>我有一个<code>QtGui.QWidget</code>这是我的主GUI。我用<code>QPushButton</code>来发信号 我试图将代码简化为我认为问题所在的基本情况。我已经验证了<code>datagramHandled</code><code>Signal</code>被发出,但是<code>packet_handled</code><code>Slot</code>似乎没有被调用。在</p> <pre><code>class myObject(QtCore.QObject): def __init__(self): super(myObject, self).__init__() self.ready=False @QtCore.Slot() def do_work(self): #send a packet self.ready=False while not self.ready: time.sleep(0.01) @QtCore.Slot(int) def packet_handled(self, errorCode): print "Packet received." self.ready = True class myWidget(QtGui.QWidget): datagramHandled = QtCore.Signal(int) startRunThread = QtCore.Signal() def __init__(self,parent=None, **kwargs): super(myWidget, self).__init__(parent=parent) # Bunch of GUI setup stuff (working) self.myRunThread = QtCore.QThread() @QtCore.Slot() def run_command(self): self.myRunObj = myObject() self.myRunObj.moveToThread(self.myRunThread) self.datagramHandled.connect(self.myRunObj.packet_handled) self.startRunThread.connect(self.myRunObj.do_work) self.myRunThread.start() self.startRunThread.emit() @QtCore.Slot() def handle_datagram(self): #handle the incoming datagram errorCode = 0 self.datagramHandled.emit(errorCode) </code></pre>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>@JonHarper提供的解决方案的另一种方法是用<code>QTimer</code>替换<code>while</code>循环。因为现在在工作进程中运行了一个事件循环,它可以正确地处理<code>QTimer</code>事件(只要在相关线程中构造<code>QTimer</code>)。在</p> <p>这样,控制会定期返回到事件循环,以便在需要时可以运行其他插槽。在</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
无法使用Django/mongoengine连接到MongoDB(身份验证失败)
2 回答
无法使用Django\u mssql\u后端迁移到外部hos
5 回答
无法使用Django&Python3.4连接到MySql
2 回答
无法使用Django+nginx上载媒体文件
3 回答
无法使用Django1.6导入名称模式
10 回答
无法使用Django1.7和mongodb登录管理站点
9 回答
无法使用Djangoadmin创建项目,进程使用了错误的路径,因为我事先安装了错误的Python
3 回答
无法使用Djangockedi验证CBV中的字段
8 回答
无法使用Djangocketditor上载图像(错误400)
6 回答
无法使用Djangocron进行函数调用
4 回答
无法使用Djangofiler djang上载文件
2 回答
无法使用Djangokronos
8 回答
无法使用Djangomssql provid
9 回答
无法使用Djangomssql连接到带有Django 1.11的MS SQL Server 2016
8 回答
无法使用Djangomssq迁移Django数据库
4 回答
无法使用Djangonox创建用户
5 回答
无法使用Djangopyodb从Django查询SQL Server
3 回答
无法使用Djangopython3ldap连接到ldap
4 回答
无法使用Djangoredis连接到redis
6 回答
无法使用Django中的FK创建新表
4 回答