В простой игре 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, как это?
Нет, следует использовать =. Итак, это было просто, должно быть, было больше кофе сегодня утром. –
Также, что не так, сравнивая изображения, чтобы определить состояние? –
@ Kyle Schmidt, сравнение изображений неверно, потому что изображение не состояние, у вас может быть 10 изображений в анимации для одного и того же состояния или одного изображения в двух состояниях с другим текстом, но, что более важно, лучше сравнить простые объекты, сравнение которых вы можете предсказывать, иначе вы можете иметь два изображения, которые выглядят одинаково, но не идентичны –