我一直在拼命尝试让这段代码在我的程序中工作。我基本上想从一个文件中读入几个选项,并从这些选项中创建Tkinter按钮。创建按钮是没有问题的;目前,我只是不能让代码运行我想要的函数。你知道吗
from Lib import StegosaurMainCode as Steg
...
class App:
def __init__(self, master, menu):
buttons = []
for counter in range(0, len(menu[0])):
text = menu[0][counter]
func = menu[1][counter]
att = menu[2][counter]
buttons.append(Button(text=text, command=lambda: Steg.func(att)))
frame = Frame(master)
for item in buttons:
item.pack()
frame.pack()
在这个类中,func是我要调用的函数,Steg是另一个文件中的外部代码,att是函数的属性。我似乎不明白为什么Steg.func
不会尝试调用Steg中名为“func”的函数,而不是变量func
中描述的函数
假设
menu[1][counter]
包含字符串而不是对实际函数的引用,则需要获取对函数的引用,然后将其用作command
属性的值。您可以使用getattr:一旦这样做了,就可以像使用实际函数一样使用
func
。但是,需要将变量绑定到它们的当前值,因此需要将它们作为参数传递给lambda:让lambda在每次调用时重新绑定其
att
参数。你知道吗相关问题 更多 >
编程相关推荐