for
ループ内で tkinter にボタンを作成しようとしています。そして、各ループで、i
カウント値をコマンド値の引数として渡します。そのため、関数が値から呼び出されると、command
どのボタンが押されたかを判断し、それに応じて動作することができます。
問題は、長さが 3 だとすると、タイトルGame 1を含む 3 つのボタンが作成Game 3されますが、いずれかのボタンを押すと、出力される値は常に2
最後の反復です。したがって、ボタンは個別のエンティティとして作成されているi
ように見えますが、コマンド引数の値はすべて同じようです。コードは次のとおりです。
def createGameURLs(self):
self.button = []
for i in range(3):
self.button.append(Button(self, text='Game '+str(i+1),
command=lambda: self.open_this(i)))
self.button[i].grid(column=4, row=i+1, sticky=W)
def open_this(self, myNum):
print(myNum)
i
その特定のボタンに固執するために、反復ごとに現在の値を取得する方法はありますか?