pyqt5多线程信号传参 不知道参数类型
时间: 2023-05-25 14:04:23 浏览: 232
Qt5_QThread_信号传递
当使用多线程和信号传递参数时,建议将参数定义为类实例变量,以避免数据类型的不确定性。
例如,您可以定义一个类来包含参数:
```
class SignalParameters:
def __init__(self, param1, param2):
self.param1 = param1
self.param2 = param2
```
然后,在您的信号和槽中使用该类:
```
class MyThread(QtCore.QThread):
my_signal = QtCore.pyqtSignal(SignalParameters)
def __init__(self, parent=None):
super().__init__(parent)
def run(self):
parameters = SignalParameters('hello', 123)
self.my_signal.emit(parameters)
class MyWindow(QtWidgets.QWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.my_thread = MyThread(self)
self.my_thread.my_signal.connect(self.handle_signal)
def start_thread(self):
self.my_thread.start()
def handle_signal(self, parameters):
print(parameters.param1)
print(parameters.param2)
```
在这个例子中,我们使用了类实例变量SignalParameters来封装传递给信号的参数。在槽方法中,我们可以通过访问实例变量属性来获取参数值。
阅读全文