0

我的程序中有一组使用 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 方法在调用第一个按钮的构造函数时自动调用,然后就不起作用了。

4

1 回答 1

0

command选项引用可调用对象。但是,您会addChoice立即调用,然后将返回的内容(无)分配给该command选项。

你需要做类似的事情Button(...command=self.addChoice)

如果您需要传递参数,则需要使用 lambda 或functools.partial. 在此站点上搜索其中任何一个-在 SO 上已多次询问并回答了此问题的变体。

于 2012-05-29T22:55:46.293 回答