簡體   English   中英

如何在python中的tkinter中使用圖像更新標簽?

[英]How do I update a label with an image in tkinter in python?

我有一個帶有幾個選項的下拉菜單,以及一個帶有圖像的標簽。

我想根據從下拉菜單中選擇的選項來更改圖像,但我無法弄清楚。

示例代碼:

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()

您必須為想要的每個圖形制作一個PhotoImage的列表/元組。 您還必須跟蹤StringVar ,以便知道OptionMenu的值OptionMenu更改。 然后,您要做的就是使用config方法設置標簽的圖像。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM