我的程序中有一组方法使用Tkinter,它们的行为与我认为的不同。我希望能够在窗口中按下一个按钮并显示更多文本字段,并能够在文本字段中返回结果列表。这就是我所拥有的:
def expandChoice(self):
root = Tk()
choices = []
plusButton = Button (root, text='+', command=self.addChoice(root, choices))
plusButton.pack()
quitButton = Button (root, text='Ok', command=root.destroy )
quitButton.pack()
root.mainloop()
return choices
def addChoice(self, parent, variables):
variables.append(StringVar())
text = Entry(parent, textvariable=variables[len(variables)-1])
text.pack()
当窗口加载(按钮上方)时,会出现一个文本字段,而加号按钮不执行任何操作。我究竟做错了什么?似乎在调用第一个按钮的构造函数时会自动调用addChoice方法,然后在此之后无法工作。
答案 0 :(得分:0)
command
选项引用可调用对象。但是,您立即调用addChoice
,然后将返回的内容(无)分配给command
选项。
您需要执行Button(...command=self.addChoice)
如果需要传递参数,则需要使用lambda或functools.partial
。搜索本网站上的任何一个 - 在SO上已经多次询问和回答了这个问题的变体。