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()

ウィンドウが読み込まれると (ボタンの上に) 1 つのテキスト フィールドが表示され、プラス ボタンは何もしません。私は何を間違っていますか?最初のボタンのコンストラクターが呼び出されたときに addChoice メソッドが自動的に呼び出され、その後は機能しないようです。

4

1 に答える 1

0

このcommandオプションは、callable への参照を取ります。ただし、addChoiceすぐに呼び出して、それが返すもの (None) をcommandオプションに割り当てています。

次のようなことをする必要がありますButton(...command=self.addChoice)

引数を渡す必要がある場合は、ラムダまたはfunctools.partial. このサイトでそれらのいずれかを検索してください - この質問のバリエーションは、SOで何度も尋ねられ、回答されています。

于 2012-05-29T22:55:46.293 に答える