Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PyQt和QSignalMapper/lambdas-多信号,单槽_Python_Qt_Pyqt_Signals_Signals Slots - Fatal编程技术网

Python PyQt和QSignalMapper/lambdas-多信号,单槽

Python PyQt和QSignalMapper/lambdas-多信号,单槽,python,qt,pyqt,signals,signals-slots,Python,Qt,Pyqt,Signals,Signals Slots,我在PyQt的菜单上有一个操作列表,每个不同的提要对应一个操作列表。所以我有一个Y,它将活动提要设置为Y,Z将其设置为Z,等等,用于网络喜剧阅读程序 我把每一个都列在菜单上,觉得自动化的方法可能更好;而不是每次都打字。类似于一个函数,它将它添加到字典中,然后用信号将它连接到单个插槽 然而,我希望slot函数,比如说它叫做Foo,接受一个参数来决定点击了什么。所以如果点击了X,那么X,Y传递Y,等等 环顾四周,有一个问题说用一个lambda,它看起来……不太对 另一种方法是使用QSignalMap

我在PyQt的菜单上有一个操作列表,每个不同的提要对应一个操作列表。所以我有一个Y,它将活动提要设置为Y,Z将其设置为Z,等等,用于网络喜剧阅读程序

我把每一个都列在菜单上,觉得自动化的方法可能更好;而不是每次都打字。类似于一个函数,它将它添加到字典中,然后用信号将它连接到单个插槽

然而,我希望slot函数,比如说它叫做Foo,接受一个参数来决定点击了什么。所以如果点击了X,那么X,Y传递Y,等等

环顾四周,有一个问题说用一个lambda,它看起来……不太对

另一种方法是使用QSignalMapper。我试图寻找这个,但找不到一个如何使用它的例子

有人能帮忙吗

谢谢

您可以使用functools.partial链接:

上面的示例非常基本,但如果您有更多问题,我可以详细说明。

您可以使用functools。部分链接:

上面的例子是非常基本的,但是如果你有更多的问题,我可以详细说明

import functools
...

# note that these are the 'new style' slot connections (not necessarily needed)
self.menu_entry_x.triggered.connect(functools.partial(myfunc, x))
self.menu_entry_y.triggered.connect(functools.partial(myfunc, y))