我想向 pyqtSignal 发出未知数量的参数
例如当将未知参数传递给 def 时:-
def oPrint(*args):
print(args)
我想对 pyqtSignal 做同样的事情。即:-
class UI(QMainWindow):
msgSig = pyqtSignal(*object) #this gives error
TL;博士; Qt 需要知道参数的数量,因此无法满足您的要求。
解决方法是使用某些容器作为列表或元组。
class UI(QMainWindow):
msgSig = pyqtSignal(list)
ui = Ui()
l = [1, "2", 3, "4"]
ui.msgSig.emit(l)
def oPrint(args):
print(args)
您需要发出一个元组/列表, 但接收者可以有任意数量的参数!
通过写这样的东西:
class UI(QMainWindow):
msg_sig = pyqtSignal(Any)
def __init__(self):
self.msg_sig.connect(lambda r: self.out(*r), Qt.QueuedConnection)
def xx(self):
self.msg_sig.emit([1, 2, 3])
def out(args1, args2, args3):
print(args1, args2, args3)
为了让它更好,您可以编写自己的发出函数,接受一个信号和任意数量的参数,然后将所有参数作为一个列表发出。