PyQt中不能在线程中进行UI操作,必须在主线程中才能操作UI。但实际应用中,会涉及到需要在线程中操作UI的场景,这时,就可以通过自定义信号的方法来解决。除此之外,当PyQt提供的默认信号无法满足需求时,也可以通过自定义信号的方式来解决。
自定义信号的应用步骤如下:
- 定义信号
- 将信号与处理信号的槽进行关联
- 编写响应方法(槽)
- 发送信号
代码如下:
from PyQt4.QtGui import *
from PyQt4.QtCore import *
class Test(QMainWindow):
# 自定义信号必须为类属性
signal_test = pyqtSignal()
def __init__(self):
self.signal_test.connect(self.on_test)
def on_test(self):
pass
# 通过self.signal_teste.emit()发送信号