gpt4 book ai didi

python - tkinter GUI 按钮列表

转载 作者:太空宇宙 更新时间:2023-11-03 14:31:56 28 4
gpt4 key购买 nike

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 个表情符号/描述符,唯一显示图像且按钮实际处于事件状态的表情符号/描述符是列表中的最后一个。我从未使用过 Python 的 GUI,所以我不完全确定如何解决此错误...有什么建议吗?

最佳答案

我无法(轻松)测试这一点,因为您问题中的代码不够完整,无法运行,但我认为问题在于 img 变量的值被 for循环。

解决这个问题可能很简单,只需将当前值作为默认参数传递给您定义的 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 值设为 Button 的属性来保存它:

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.img = img # ADDED to save value of img
b.pack()

关于python - tkinter GUI 按钮列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47214273/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com