2017-05-26 154 views
0

我想在按下按钮时显示2个不同的图像。我有两个图像和相应的2个按钮。我正在使用面板的配置功能来尝试更改图像,但无济于事。我怎么做到这一点?谢谢!使用按钮更改图像使用Python单击按钮Tkinter

import Tkinter as tk 
from PIL import ImageTk, Image 

def next(panel): 
    path = "2.jpg" 
    img = ImageTk.PhotoImage(Image.open(path)) 
    panel.configure(image=img) 
    panel.image = img # keep a reference! 

def prev(panel): 
    path = "1.jpg" 
    img = ImageTk.PhotoImage(Image.open(path)) 
    panel.configure(image=img) 
    panel.image = img # keep a reference! 

#Create main window 
window = tk.Tk() 

#divide window into two sections. One for image. One for buttons 
top = tk.Frame(window) 
top.pack(side="top") 
bottom = tk.Frame(window) 
bottom.pack(side="bottom") 

#place image 
path = "1.jpg" 
img = ImageTk.PhotoImage(Image.open(path)) 
panel = tk.Label(window, image = img) 
panel.image = img # keep a reference! 
panel.pack(side = "top", fill = "both", expand = "yes") 


#place buttons 
prev_button = tk.Button(window, text="Previous", width=10, height=2, command=prev(panel)) 
prev_button.pack(in_=bottom, side="left") 
next_button = tk.Button(window, text="Next", width=10, height=2, command=next(panel)) 
next_button.pack(in_=bottom, side="right") 

#Start the GUI 
window.mainloop() 

回答

1

要将参数传递到按钮回调命令,你需要的lambda关键字,否则功能将在按钮创建时被调用。

#place buttons 
prev_button = tk.Button(window, text="Previous", width=10, height=2, command=lambda: prev(panel)) 
prev_button.pack(in_=bottom, side="left") 
next_button = tk.Button(window, text="Next", width=10, height=2, command=lambda: next(panel)) 
next_button.pack(in_=bottom, side="right")