for emoji, descriptor in emoji_descriptor
img = ImageTk.PhotoImage(Image.open("emojis/"+descriptor+".png"))
b = Button(emojiApp, text = descriptor,
command=lambda x=emoji: appendEmoji(x), image=img)
b.pack()
#after the list of buttons have been made
for i in range(len(buttons)):
buttons[i].grid(row = i//4, column = i%4)
emoji_descriptor
可以是带有描述的表情符号对的列表:
[(❤️ “red_heart”),
( “wink_tongue_out”),
...]
在这种情况下,我有20个表情符号/描述符,唯一一个显示图像并且其按钮实际处于活动状态的是列表中的最后一个。我从未使用GUI进行python,所以我不完全确定如何解决这个错误...有什么建议吗?
答案 0 :(得分:1)
我无法(轻松)测试这个,因为你问题中的代码不够完整,无法运行,但我认为问题是.every( element => element);
变量的值被{{1}更改了}循环。
解决这个问题可能很简单,因为将当前值作为默认参数传递给您定义的img
函数 - 类似于您为for
参数捕获当前值{ {1}}并将它传递给正在创建的匿名函数:
lambda
如果这不起作用,另一种方法是保存当前x=emoji
值,方法是在emoji
创建后将其作为for emoji, descriptor in emoji_descriptor
img = ImageTk.PhotoImage(Image.open("emojis/"+descriptor+".png"))
b = Button(emojiApp, text=descriptor,
command=lambda x=emoji, img=img: appendEmoji(x), image=img) # CHANGED.
b.pack()
的属性:
PhotoImage