如何在python中用tkinter中的图像更新标签?
我有一个下拉菜单,有几个选项,还有一个标签,上面有一个图像 我想根据从下拉菜单中选择的选项更改图像,但我无法确定 示例代码:如何在python中用tkinter中的图像更新标签?,python,tkinter,Python,Tkinter,我有一个下拉菜单,有几个选项,还有一个标签,上面有一个图像 我想根据从下拉菜单中选择的选项更改图像,但我无法确定 示例代码: from Tkinter import* import Tkinter as tk def image(): list1=['im1.gif','im2.gif'] studDropDown['menu'].delete(0, "end") for string in list1: studDropDown['menu'].add
from Tkinter import*
import Tkinter as tk
def image():
list1=['im1.gif','im2.gif']
studDropDown['menu'].delete(0, "end")
for string in list1:
studDropDown['menu'].add_command(label=string,command=lambda value=string:studFiles.set(value))
app=Tk()
app.title("Example")
app.geometry('500x200+200+200')
app.configure(background='black')
app.resizable(0,0)
button1=Button(app,text='Press me',command=image)
button1.pack()
studFiles = StringVar()
studFiles.set('Image')
files =["Please Wait"]
studDropDown = OptionMenu(app, studFiles, *files)
studDropDown.config(font=("Times",16,"italic"))
studDropDown["menu"].config(font=("Times",16,"italic"))
studDropDown.pack()
photo =PhotoImage(file='im.gif')
label = Label(app,image=photo)
label.image = photo # keep a reference!
label.pack()
app.mainloop()
甚至可能使用标签来显示图像也不合适
有什么想法吗?以下是一个基于您提供的代码的简单示例:
from Tkinter import *
def change_image(*args):
# Change image of label accordingly
label.config(image=photos[int(studFiles.get())])
app = Tk()
app.title("Example")
app.geometry('500x200+200+200')
app.configure(background='black')
app.resizable(0,0)
studFiles = StringVar()
studFiles.set('Image')
files =['0', '1'] # Number is corresponding list index
studDropDown = OptionMenu(app, studFiles, *files)
studDropDown.config(font=("Times", 16, "italic"))
studDropDown["menu"].config(font=("Times", 16, "italic"))
studDropDown.pack()
studFiles.trace("w", change_image)
# List of photoimages for each image
photos =(PhotoImage(file='im.gif'), PhotoImage(file='im2.gif'))
label = Label(app,image=photos[0])
label.pack()
app.mainloop()
你必须为你想要的每一张图片制作一张照片的列表/元组。您还必须跟踪您的
StringVar
,以便知道选项菜单的值何时更改。然后你所要做的就是用config
方法设置标签的图像。我不知道为什么,但每篇文章开头都少了几个词。