Python Tkinter 比较 PhotoImage 对象
在一个简单的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
结果总是返回True——我可以把灯关掉,但永远无法再打开。经过一些研究,我意识到我可能应该使用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对象呢?
1 个回答
3
指针
self.buttons[x][y].image == self.off,你确定要用"=="而不是"="吗?
通过比较图片来判断你当前的状态并不是个好方法,建议使用一个变量,比如 self._isLightOn,当你改变状态时切换这个变量的值。然后根据这个变量来设置正确的图片、文本或者其他东西。