В простой игре LightsOut , когда я нажимаю на свет, мне нужно переключать изображение на кнопке. Я делаю это с Tkinter, поэтому я решил просто проверить и посмотреть, какое изображение в данный момент находится на кнопке («on.gif» или «off.gif») и установить его на другое, например так:
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, как этот?