当前位置: 首页 > 面试题库 >

发送自定义PyQt信号?

严兴言
2023-03-14
问题内容

我正在通过制作一个简单的Twitter客户端来练习PyQt和(Q)线程。我有两个Qthread。

  1. 主/ GUI线程。

  2. Twitter提取线程-每隔X分钟从Twitter提取数据。

因此,每隔X分钟,我的Twitter线程就会下载一组新的状态更新(Python列表)。我想将此列表移交给Main /
GUI线程,以便它可以使用这些状态更新窗口。

我假设我应该使用信号/插槽系统将“状态” Python列表从Twitter线程传输到Main / GUI线程。所以,我的问题是双重的:

  1. 如何从Twitter线程发送状态?

  2. 如何在Main / GUI线程中接收它们?

据我所知,PyQt默认情况下只能通过信号/插槽发送PyQt对象。我想我应该以某种方式注册一个自定义信号,然后再发送该信号,但是对于像我这样的新手,我发现的有关此文档的内容还不清楚。我已订购一本PyQt书籍,但不会在下个星期寄出,也不想等到那时。:-)

我在Ubuntu上使用PyQt 4.6-1

更新:

这是无效代码的专家。首先,我尝试将信号(“ newStatuses”,我刚刚组成的一个名称)“连接”到Main /
GUI线程中的函数self.update_tweet_list:

QtCore.QObject.connect(self.twit_in,
                       QtCore.SIGNAL("newStatuses (statuses)"),
                       self.update_tweet_list)

然后,在Twitter线程中,我这样做:

self.emit(SIGNAL("newStatuses (statuses)"), statuses)

调用此行时,出现以下消息:

QObject::connect: Cannot queue arguments of type 'statuses'
(Make sure 'statuses' is registered using qRegisterMetaType().)

我搜索了qRegisterMetaType(),但没有找到我能理解的与Python相关的任何内容。


问题答案:

从这个例子:

http://doc.qt.digia.com/4.5/qmetatype.html

 int id = QMetaType.type("MyClass");

您可以用Python写下

from PyQt4 import QtCore    
id = QtCore.QMetaType.type('MyClass')

编辑

答案摘自评论:

self.emit(SIGNAL("newStatuses(PyQt_PyObject)"), statuses)


 类似资料:
  • /** 自定义消息发送接口(目前只支持文本消息发送) @param chatController 聊窗实体(必须是小能SDK创建的聊窗实体NtalkerChatController类型) @param type 消息类型: 11:文本消息 12:图片消息 13:语音消息 14:视频消息 @param message 消息内容 */ NSString *str = @“自定义文本消息test”;

  • 问题内容: 我试图在PyQt中发出自定义事件。一个小部件将发出,另一个小部件将监听事件,但是两个小部件不需要关联。 在JavaScript中,我会这样做 编辑:我知道信号和插槽,但只知道如何在父级和子级之间使用它们。我如何在任意不相关的小部件之间使用这种机制(或其他机制)? 问题答案: 在PyQt中,以下说明: 等价的 以类似的方式: 等价的 但是最大的区别是“文档”对象的范围,因为连接是在全局元

  • 我正在使用docker运行datadog代理 我想使用dogstatsd发送自定义指标。当我运行 我可以在wireshark中看到,udp数据包成功地从源到目标,但这个指标没有提交给datadog。我缺少一些配置吗?

  • 本文向大家介绍按钮功能和自定义事件– PyQt,包括了按钮功能和自定义事件– PyQt的使用技巧和注意事项,需要的朋友参考一下 首先,让我们创建一个主代码;然后,我们将对其进行修改。我在这里为您提供主代码。并且,所做的修改将带有其说明。让我们做一些编码: 源代码: 输出结果 此输出布局是使用主窗口小部件生成的。QtGui.QMainWindow。self.setWindowIcon(QtGui.Q

  • 本文向大家介绍php微信开发自定义菜单,包括了php微信开发自定义菜单的使用技巧和注意事项,需要的朋友参考一下 目前微信服务号自定义菜单最多包括3个一级菜单,每个一级菜单最多包含5个二级菜单。一级菜单最多4个汉字,二级菜单最多7个汉字,多出来的部分将会以“...”代替。请注意,创建自定义菜单后,由于微信客户端缓存,需要24小时微信客户端才会展现出来。建议测试时可以尝试取消关注公众账号后再次关注,则