我做了一個非常簡單的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