【发布时间】:2018-04-05 15:02:52
【问题描述】:
我试图在 Tk 中创建一个按钮循环,而每个按钮都嵌入了图像,当我第一次尝试没有图像的循环时它可以工作,但现在当我添加图像时它没有
def menu_window(self, box):
"""Specific function for opening the menu window"""
window = Toplevel()
self.activate_window(window, 420, 380) # window default activation at size 400x400
menu = self.waiter.full_menu()
SoupMaker(self.main_url+FOOD_IMAGES).get_images() # Download menu images.
counter, rowc = 0, 0
for item in menu: # Create a button for every item in the website menu - on click, insert item to order list.
food_img = ImageTk.PhotoImage(Image.open(item+'.png'))
bt = Button(window, image=food_img) # on click
if counter >= 3 and counter % 3 == 0:
counter = 0
rowc += 1
bt.configure(command=lambda i=item + ' ' + menu[item]: box.insert(END, i))
bt.grid(sticky='W', row=counter, column=rowc) # increase row number for every button
counter += 1
print 'done buttons'
window.mainloop()
虽然按钮确实显示在窗口中,但它们是空的并且不可用(配置的命令不起作用)... 这是带有空白图像的屏幕图像:
【问题讨论】:
-
请创建一个minimal reproducible example。此外,您可能需要删除对
mainloop的调用。一个普通的 tkinter 程序需要在程序的生命周期内只调用一次。 -
我的窗口应该跟上,谢谢,但我找到了一个解决方案,添加 bt.image = food_image 应该保存参考
-
我不知道您所说的“跟上”是什么意思,但不止一次拨打
mainloop()不会让事情变得更好。 -
为什么不呢?我想要同时激活 2 个主窗口。我有一个主窗口和菜单窗口,它们都应该一起激活
标签: python image button tkinter