0
在一個簡單的LightsOut遊戲中,當我點擊一個燈光時,我需要在一個按鈕上切換圖像。我正在用Tkinter做這件事,所以我想我只是檢查並查看按鈕上的圖像('on.gif'或'off.gif'),並將其設置爲另一個,如下所示:Python Tkinter比較PhotoImage對象
def click(self,x,y):
if self.buttons[x][y].image == self.on:
self.buttons[x][y].config(image=self.off)
self.buttons[x][y].image == self.off
else:
self.buttons[x][y].config(image=self.on)
self.buttons[x][y].image == self.on
這最終總是正確的 - 我可以關燈,但不要再打開它。做了一些研究,意識到我應該使用cmp:
def click(self,x,y):
if cmp(self.buttons[x][y].image,self.on) == 0:
self.buttons[x][y].config(image=self.off)
self.buttons[x][y].image == self.off
else:
self.buttons[x][y].config(image=self.on)
self.buttons[x][y].image == self.on
但是,這給了我完全相同的結果。 self.on和self.off都是PhotoImage對象。除了保存一組單獨的列表,它們跟蹤每個位置的光線類型並每次點擊重繪它們,有沒有辦法直接比較兩個PhotoImage對象?
不,應該使用=。所以,這是一個簡單的今天早上應該有更多的咖啡問題。 – 2010-04-16 13:17:13
另外,比較圖像以確定狀態有什麼問題? – 2010-04-16 14:34:38
@凱爾施密特,比較圖像是錯誤的,因爲圖像不是狀態,你可能有10個圖像用於相同狀態的動畫,或者兩個狀態下具有不同文本的圖像相同,但更重要的是比較簡單對象預測,否則你可以有兩個看起來相同但不相同的圖像 – 2010-04-16 18:19:15