我定义了2个变量。第一个完美显示了我在Global Array播放器中带有人名的所有按钮。
我将命令行添加到我的Button中,该按钮应该在单击后激活我的第二个def变量。第二个变量应保存Buttons索引或Text(均尝试),然后使用print来显示应显示的内容保存后再继续前进。
现在这是问题所在。
当我单击它时,它只显示一个空数组。我尝试使用[i]而不是text分配给Buttons的btn等其他内容,并且由于无法在第二个函数中使用非全局变量,所以尝试在某一时刻对btn进行全局设置没有帮助。我读了有关partials和Lambda的文章,但我无法理解需要添加/更改才能继续进行的部分。
这是我的代码:
players=['x','y','z']
players_to_random=[]
def showButtons():
for i in players:
btn = Button(window, text=i, command=onclick)
btn.pack(side=LEFT)
def onclick():
players_to_random.append() # tried several things with () and without
print(players_to_random)
showButtons()
答案 0 :(得分:1)
您的onclick
函数无法知道单击了哪个按钮。您应该将一个参数添加到函数中,并使用command
(请参见here)或lambda
partial
中
def showButtons():
for i in players:
btn = Button(window, text=i, command=lambda i=i: onclick(i))
# -- OR THIS (not both) --
btn = Button(window, text=i, command=functools.partial(onclick, i))
btn.pack(side=LEFT)
def onclick(player):
players_to_random.append(player)
print(players_to_random)