最近私はPythonを使い始めました。最初のプロジェクトで電卓を作ってみたかったので、ボタンをループで追加することにしました。しかし、ボタンのコールバックは常にコールバック関数の引数として渡したい変数の最後の状態です。ここに私のコードです。動的にボタンコールバックを割り当てる - Python
def addButtons():
buttons = []
label = ""
num = 0
posX = 4
posY = 1
for i in range(12):
if (i % 4 < 3):
num += 1
label = str(num)
else:
label = "Blank"
if (i % 4 == 0):
posY += 1
if (posX < 3):
posX += 1
else:
posX = 0
buttons.append(
Button(buttonPanel, text=label, command=lambda: function(i), relief="flat", borderwidth=0, sticky=w, background="#fff", activebackground="#eee"))
buttons[i].grid(column=posX, row=posY, sticky=N + S + E + W)
buttonPanel.grid_columnconfigure(posX, weight=1)
buttonPanel.grid_rowconfigure(posY, weight=1)
functions.append(label)
def function(obj): # the button's functions are identified by this function and executed respectively
print obj
私がボタンをクリックすると、私はいつもコンソールから11を得る。コールバックパラメータを動的に設定できる方法はありますか?任意の助け ため
おかげ - ヤコブ
完璧に動作します、ありがとうございました! –