tkinter按钮列表

时间:2017-11-10 01:18:30

标签: python user-interface tkinter emoji

Heres the gui I've created!

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,所以我不完全确定如何解决这个错误...有什么建议吗?

1 个答案:

答案 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