2011-11-12 10 views
1

私はいくつかの選択肢とそこに画像付きのラベルを持つドロップダウンメニューを持っています。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_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() 

多分使用することは適切ではありません。

アイデア?ここで

+0

私は理由を知っていませんが、すべての投稿から、最初の数単語が欠落しています。 – GiannisIordanou

答えて

5

は、あなたが提供するコードのベース簡単な例です:

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 Sのリスト/タプルを行う必要があります。また、StringVarをトレースする必要がありますので、OptionMenuの値が変更された時期を知ることができます。次に、ラベルの画像をconfigメソッドで設定するだけです。

+0

ありがとう、私はそれを使用し、それは働いた。 – GiannisIordanou

関連する問題