PyQt发送参数到插槽时连接到标记

2024-04-29 03:22:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个任务栏菜单,当被点击时,它连接到一个获取触发器事件的插槽。现在的问题是我想知道单击了哪个菜单项,但我不知道如何将该信息发送到连接到的函数。下面是用于将操作连接到函数的:

QtCore.QObject.connect(menuAction, 'triggered()', menuClickedFunc)

我知道有些事件返回一个值,但trigged()不返回。那么我该如何实现这一点呢?我需要自己发信号吗?


Tags: 函数信息connect菜单事件插槽菜单项触发器
3条回答

如前所述here您可以使用lambda函数向要执行的方法传递额外的参数。

在本例中,您可以将字符串obj传递给按下按钮时调用的函数AddControl()。

# Create the build button with its caption
self.build_button = QPushButton('&Build Greeting', self)
# Connect the button's clicked signal to AddControl
self.build_button.clicked.connect(lambda: self.AddControl('fooData'))
def AddControl(self, name):
    print name

来源:snip2code - Using Lambda Function To Pass Extra Argument in PyQt4

使用lambda

下面是来自PyQt book的示例:

self.connect(button3, SIGNAL("clicked()"),
    lambda who="Three": self.anyButton(who))

顺便说一下,您也可以使用functools.partial,但我发现lambda方法更简单、更清晰。

使用functools.partial

否则,如果使用lambda,则在脚本运行时将发现无法动态传递参数。

相关问题 更多 >