在应用程序上获得多个图像?

时间:2017-04-09 02:46:43

标签: python image tkinter

我正在开发一个披萨应用程序,想要添加图像以使用checkbutton选项,我可以在那里得到一张图片就好了但是当我把下一张图片放在它上面取代第一张时,我就是真的迷失了怎么做。这是我的代码:

import tkinter as tk 
from PIL import Image, ImageTk
import webbrowser

URL = "http://pizzahut.com.au"
pizza = tk.Tk()
pizza.title("Pizza App")
pizza.geometry("300x400")

def open_ph(event):
    webbrowser.open_new_tab("http://pizzahut.com.au")

button = tk.Button(pizza, text="Welcome to Awesome Pizza")
button.grid(column=0, row=0)
button.configure(foreground="black")
button.configure(background="red")

checkbutton = tk.Checkbutton(pizza, text="Meat Lovers")
checkbutton.grid(column=0, row=1, padx=(5, 95))
checkbutton.configure(foreground="red")

checkbutton2 = tk.Checkbutton(pizza, text="Supreme")
checkbutton2.grid(column=0, row=20, padx=(10, 120))
checkbutton2.configure(foreground="darkgreen")

image = Image.open(r"C:\Users\simon\desktop\pictures\pizza_pics\meat_lovers.jpg")
image.thumbnail((100, 100), Image.ANTIALIAS)
photo = ImageTk.PhotoImage(image)
label_image = tk.Label(image=photo)
label_image.grid(column=0, row=7, padx=(5, 95))

second_image = Image.open(r"C:\Users\simon\Desktop\pictures\pizza_pics\supreme.jpg")
second_image.thumbnail((100, 100), Image.ANTIALIAS)
photo = ImageTk.PhotoImage(second_image)
label_image = tk.Label(image=photo)
label_image.grid(column=0, row=10)

button.bind("<Button-1>", open_ph)
pizza.mainloop()

1 个答案:

答案 0 :(得分:0)

为了正确显示ImageTk.PhotoImage张图片,您需要为每张图片保留持久性参考(请参阅this answerdocumentation)。

因此,当您定义第二个ImageTk.PhotoImage时,您应该将其分配给新变量,而不是覆盖第一个变量:

photo2 = ImageTk.PhotoImage(second_image)
label_image2 = tk.Label(image=photo2)
label_image2.grid(column=0, row=10)