Python Tkinter比较PhotoImage对象

时间:2010-04-16 13:06:42

标签: python tkinter

在简单的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对象?

1 个答案:

答案 0 :(得分:3)

指针

  1. self.buttons [x] [y] .image == self.off,你确定要“==”而不是“=”

  2. 比较图像以获得您所处的状态并不是一个好方法,而是使用变量例如self._isLightOn并在更改状态时根据此变量设置正确的图像或文本或其他任何内容来切换它。