2012-05-29 35 views
0

我有一套方法在我的程序中使用Tkinter,它的行爲不像我認爲的那樣。我希望能夠在窗口中按下按鈕並顯示更多文本字段,並且能夠在文本字段中返回結果列表。以下是我有: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方法,然後在此之後不起作用。

+1

[Tkinter按鈕命令可能在運行程序時激活?](http://stackoverflow.com/questions/3704568/tkinter-button-command-activates-upon-running-program) –

回答

0

command選項引用一個可調用對象。但是,您立即呼叫addChoice,然後將選擇的內容(無)分配給command選項。

你需要做的是這樣Button(...command=self.addChoice)

如果你需要傳遞你要麼需要使用lambda或functools.partial參數。搜索這個網站上的任何一個 - 這個問題的變體已被問及在SO上多次回答。