我做了一个非常简单的GUI,它有一个按钮并显示图像(.gif)。我的目标是每当你按下按钮时输出另一个.gif文件。在我的文件目录中有2个.gif文件,并且每当你按下按钮时都要在这两个文件之间切换。当按下按钮时显示重复图像的简单GUI
#Using python2.7.2
import Tkinter
root = Tkinter.Tk()
try:
n
except:
n = 0
def showphoto(par):
if par%2 == 0:
try:
label2.destroy()
except:
pass
photo = Tkinter.PhotoImage(file="masc.gif")
label2 = Tkinter.Label(image=photo)
label2.image = photo
label2.pack()
else:
try:
label2.destroy()
except:
pass
photo = Tkinter.PhotoImage(file="123.gif")
label2 = Tkinter.Label(image=photo)
label2.image = photo
label2.pack()
myContainer1 = Tkinter.Frame(root, width = 100, height = 100)
myContainer1.pack()
def callback(event):
global n
showphoto(n)
n = n + 1
button1 = Tkinter.Button(myContainer1)
button1["text"]= "Next pic"
button1["background"] = "green"
button1.bind("<Button-1>", callback(n))
button1.pack()
root.mainloop()
当前的代码只是输出第一图像(masc.gif
),但是当我按下按钮不切换到另一图像(123.gif
)。我究竟做错了什么?
我觉得这个代码,你只需要使用n回调的全球外。而不是'try:n;除了:n = 0',为什么不使用'global n; n = 0'? – gary 2012-04-21 17:03:59
我这样做,它不会改变任何东西。另外,据我所知,在函数之外声明一个可变的全局是多余的。 – Bentley4 2012-04-22 08:43:44