用于在帧中更改png图像的Tkinter按钮

时间:2014-02-20 06:29:36

标签: python button tkinter

我试过环顾四周,但只能找到试图在按钮上更改图像的人,而不是用按钮

这是我到目前为止所拥有的

from Tkinter import *
import Tkinter as tk
from random import randrange
from PIL import ImageTk, Image
import tkMessageBox
import tkFont
root = tk.Tk()
root.title("Randomizer")
root.minsize(900,600)
root.maxsize(900,600)
adress = "C:\Users\pc\Desktop\ClassPics\Class.png"
playerclass1 = ImageTk.PhotoImage(Image.open(adress))
panel = tk.Label(root, image = playerclass1)
panel.pack(side='top')

def randomizer():
    playerclassV = randrange(0,10)
    if playerclassV == 0:
        adress = "C:\Users\pc\Desktop\ClassPics\1.png"
    elif playerclassV == 1:    
        adress = "C:\Users\pc\Desktop\ClassPics\2.png"
    elif playerclassV == 2:  
        adress = "C:\Users\pc\Desktop\ClassPics\3.png"
    elif playerclassV == 3:  
        adress = "C:\Users\pc\Desktop\ClassPics\4.png"
    elif playerclassV == 4:  
        adress = "C:\Users\pc\Desktop\ClassPics\5.png"
    elif playerclassV == 5:  
        adress = "C:\Users\pc\Desktop\ClassPics\6.png"
    elif playerclassV == 6:  
        adress = "C:\Users\pc\Desktop\ClassPics\7.png"
    elif playerclassV == 7:  
        adress = "C:\Users\pc\Desktop\ClassPics\8.png"
    else:  
        adress = "C:\Users\pc\Desktop\ClassPics\9.png"
    playerclass = ImageTk.PhotoImage(Image.open(adress))
    panel.configure(image = playerclass)
    panel.image = playerclass
Randomize = Button ( root, text="Randomize", justify="center", width=20, command=randomizer())
Randomize.pack(side = 'bottom')
root.mainloop()

这个想法是在一个只有初始图像和随机化按钮的窗口中开始,随机化按钮用randrange函数随机选择的9个图像中的1个替换初始图像。现在它不是显示初始图像,而是直接进入该功能(显示9个后一个图片中的一个,而不是初始图片),按钮什么都不做

请帮助

1 个答案:

答案 0 :(得分:2)

这是因为你调用这个功能。 您应该使用command=randomizer。如果您希望在运行程序时不调用该函数,请不要使用()。 如果您希望发送一些参数(在这种情况下不明显),您可以使用command=lambda:randomizer(args)。 有关更详细的答案,请参阅this