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

标签 python qt pyqt signals signals-slots

我在 PyQt 的菜单上有一个 Action 列表,每个 Action 对应我要显示的每个不同提要。所以我有一个 Y 将事件提要设置为 Y,Z 将其设置为 Z,等等(对于网络漫画阅读程序)。

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

但是,我希望那个插槽函数(假设它称为 Foo)采用一个参数来决定单击了什么。因此,如果单击 X,则 X、Y 传递 Y,等等。

环顾四周,有一个 SO 问题说要使用 lambda,它看起来……不知何故不对。

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

有人能帮忙吗?

谢谢!

最佳答案

您可以使用 functools.partial(链接 to the documentation):

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))

上面的例子很基础,如果你有更多问题,我可以详细说明。

关于python - PyQt 和 QSignalMapper/lambdas - 多信号,单槽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3893876/

相关文章:

c++ - QGraphicsView 速度慢,有大量 QGraphicsPixmapItem

python - 你如何从 sip.voidptr (QImage.constBits()) 到 ctypes void 或 char 指针?

python - 两个Python类实例相互引用

python - virtualenvwrapper.sh : fork: Resource temporarily unavailable - Python/Django

python - 线性回归不对称系数 - python 中的双 beta

python PyQt : Is it possible to use QThread with a non-GUI program?

python - 如何使用 PyQt 抓取桌面屏幕截图?

python - 谁能告诉我django的延迟加载和事务吗?

c++ - 如何在诺基亚 qt C++ 中将一页导航到另一页;

c++ - 在两个 Qt 窗口之间发送事件