我使用的是PyQt,希望根据字符串列表创建一个菜单。在
问题是当我想调用'addAction'时,它需要一个不带任何参数的回调函数(对于每个字符串)。在
菜单很简单
menu.addAction("Open", self.open)
menu.addAction("Exit", self.quit)
但是,我只想使用一个函数,并将“action string”作为参数传入。在
我想知道python是否可以这样做:
^{pr2}$下面是我的代码片段:
def printParam(parameter):
print "You selected %s" % parameter
# parameters = list of strings
menu_bar = QMenuBar()
menu = menu_bar.addMenu('Select Parameter')
for parameter in parameters:
# This line will not work because the action does not pass in
# any arguments to the function
menu.addAction(parameter, printParam)
有什么建议非常感谢
是的,这叫做部分应用。标准库有一个类来部分应用函数^{} 。您应该在示例中编写
partial(f, x=7)
或partial(f, 7)
(因为它是一个位置参数,不需要跳过任何位置参数)。在可以使用闭包,如下所示:
functools.partial()允许您提前提供一些参数。它允许您根据需要进行自定义回调。在
相关问题 更多 >
编程相关推荐