Python 使用*args创建通用信号

Python 使用*args创建通用信号,python,multithreading,python-3.x,signals,qobject,Python,Multithreading,Python 3.x,Signals,Qobject,我试图创建一个通用函数调用程序类,目的是从主线程外部调用GUI函数。该类有一个信号和两个函数:一个被调用以发出信号并从一个侧线程运行。另一个运行实际函数,并连接到主线程中的信号 为了使这个类保持泛型,我希望能够传递任意数量的参数,就像通常使用*args或**kwargs所做的那样。但是在初始化信号时,我需要定义传递的参数 这是我的通用函数调用者(为了清晰起见,代码被精简): 以下是主线程中显示的内容: functionCaller = FunctionCaller(function = some

我试图创建一个通用函数调用程序类,目的是从主线程外部调用GUI函数。该类有一个信号和两个函数:一个被调用以发出信号并从一个侧线程运行。另一个运行实际函数,并连接到主线程中的信号

为了使这个类保持泛型,我希望能够传递任意数量的参数,就像通常使用*args或**kwargs所做的那样。但是在初始化信号时,我需要定义传递的参数

这是我的通用函数调用者(为了清晰起见,代码被精简):

以下是主线程中显示的内容:

functionCaller = FunctionCaller(function = someGUIfunction)
foo = functionCaller.doFunction # foo is a global variable
在这里我调用了侧线程中的函数:

foo(0xc000, 'string')
在使用3个参数运行函数时出现的错误:
\u请求(int)只接受1个参数,给定3个


有没有办法做到这一点,或者这个函数必须不像我希望的那样通用,只适用于设置数量和类型的参数?

您的信号类属于哪个库?您在代码中的其他地方传递的参数数量不正确,但尚未发布。除了您收到的错误之外,
\u do\u函数
方法中似乎还有一个缺陷,因为它总是容易受到数量可变的参数的攻击。我不确定您的整个代码是如何构造的,但是否可以将函数及其参数与
functools.partial
组合起来,然后将其传递给一个队列,以便在主线程/事件循环中调用?@Sam它属于PySide.QtCore。我修正了一些东西并添加了我遗漏的相关代码,请再看一看。我不确定在这种情况下分部函数是如何工作的。它无法回避我试图通过信号传递任意数量的变量这一事实。
foo(0xc000, 'string')