【问题标题】:I want an image to be displayed in tkinter我希望在 tkinter 中显示图像
【发布时间】:2020-08-31 07:37:21
【问题描述】:

我有一个下拉列表。对于我从下拉列表中选择的每个项目,我都是与该项目相关的图像,以显示在下拉列表下方。我可以分开做,但不知道如何在 tkinter 中把它们放在一起

import tkinter as tk
from PIL import Image, ImageTk
fruitslist = [
    "apple",
    "orange",
    "grapes",
    "banana"
]

root = tk.Tk()

root.geometry('100x200')

def selc(event):
    if clicked.get() == "orange":
        img = ImageTk.PhotoImage(Image.open("image.jpg"))
        la.configure(image=img)
        la.image = img
    else:
        print("no image")
        
la = tk.Label(root, text="hi")

clicked = tk.StringVar(root)
clicked.set(fruitslist[0])

drop = tk.OptionMenu(root, clicked, *fruitslist, command = selc)
drop.pack()

root.mainloop()

【问题讨论】:

标签: python tkinter


【解决方案1】:

您可以将命令设置为OptionMenu,并根据选择处理函数中的所有图像更改逻辑。

import tkinter as tk
from PIL import ImageTk, Image

fruitslist = [
    "apple",
    "orange",
    "grapes",
    "banana"
]

app = tk.Tk()

fruits_dict = {}
for fruit_name in fruitslist:
    fruits_dict[fruit_name] = ImageTk.PhotoImage(Image.open("{}.png".format(fruit_name)))

app.geometry('100x200')

variable = tk.StringVar(app)
variable.set(fruitslist[0])


def change_image(e):
    print(e)  # selected option
    # print(variable.get())  # Also you can retrieve selected option from the var
    # Change image here
    my_image.config(image=fruits_dict[e])


opt = tk.OptionMenu(app, variable, *fruitslist, command=change_image)
opt.config(width=90, font=('Helvetica', 12))
opt.pack()

my_image = tk.Label(app)
my_image.pack()

app.mainloop()

【讨论】:

  • 我已经更新了原始帖子中的代码。我没有收到任何错误,但我也没有在 tkinter 窗口上看到任何图像。请检查?
  • 更新了代码,确保fruite_name.png存在
猜你喜欢
  • 2012-11-18
  • 1970-01-01
  • 2023-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多