gpt4 book ai didi

python - PyQt : Consolidating signals to a single slot

转载 作者:行者123 更新时间:2023-11-28 20:54:33 27 4
gpt4 key购买 nike

我正在尝试减少我必须在上下文菜单中使用的信号量。菜单由切换程序运行模式的 Action 组成,因此插槽进行的操作非常简单。引用 QMenu::triggered 上的文档,

Normally, you connect each menu action's triggered() signal to its own custom slot, but sometimes you will want to connect several actions to a single slot, for example, when you have a group of closely related actions, such as "left justify", "center", "right justify".

但是,我无法弄清楚如何完成此操作,文档也没有进一步详细说明。
假设我有操作 actionOpMode1actionOpMode2在菜单中actionMenu , 和一个插槽 setOpMode .我要setOpMode用一个参数调用,该参数以某种方式与触发的操作相关。我尝试了关于这个主题的各种排列:

    QObject.connect(self.actionMenu, SIGNAL('triggered(QAction)'), self.setOpMode)  

但我从来没有让它调用 setOpMode,这表明 actionMenu 从来没有“感觉被触发”,可以这么说。

this SO question ,建议可以用lamdbas来完成,但是这个:

    QObject.connect(self.actionOpMode1, SIGNAL('triggered()'), lambda t: self.setOpMode(t))

给出 "<lambda> () takes exactly 1 argument (0 given)" .我不能说我真的理解它应该如何工作,所以在从 clicked() 移动到 triggered() 时我可能做错了什么。

它是怎么做到的?

最佳答案

使用 QObject.Sender 是解决方案之一,尽管不是最干净的解决方案。

使用QSignalMapper将值与发出信号的对象清晰地关联起来。

关于python - PyQt : Consolidating signals to a single slot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1063734/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com