Я использую PyQt и хочу создать меню на основе списка строк.
Проблема в том, что когда я хочу вызвать addAction, требуется функция обратного вызова (для каждой строки), которая не принимает никаких аргументов.
Для простых меню это будет хорошо: например,
menu.addAction("Open", self.open)
menu.addAction("Exit", self.quit)
Однако я хочу просто использовать одну функцию и передать в качестве аргумента «строку действия».
Мне интересно, может ли python сделать что-то вроде этого:
def f(x, y):
print x + 2*y
# These 2 variables are of type: <type 'function'>
callback1 = f
callback2 = f(x=7, *)
# NB: the line above is not valid python code.
# I'm just illustrating my desired functionality
print callback1(2,5) # prints 12
print callback2(5) # prints 17
Вот мой фрагмент кода:
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)
Любые предложения с благодарностью