Python tkinter没有显示gif图像并显示为PhotoImage.1

时间:2017-07-27 03:56:59

标签: tkinter python-3.6

我正在为我的python类简介做一个tic tac toe项目,我想制作一个包含9个按钮的网格,所以当你点击它们时会出现一个x或一个圆圈的图像。我的代码在没有图像的情况下正常运行,但它不适用于图像。

Layout for tic tac toe

What happens after I click on one of the buttons

这是代码(对不起,我从未发布过堆栈,所以我不知道如何格式化) 这是新的

def sink(self, i):

    if self.turn:
        me = PhotoImage(file="x.gif")
        self.turn = False
        self.bState[i] = -1
        self.bList[i].config(relief=SUNKEN, text=me, state='disabled')
    else:
        me = PhotoImage(file="o.gif")
        self.turn = True
        self.bState[i] = 1
        self.bList[i].config(relief=SUNKEN, text=me, state='disabled')

1 个答案:

答案 0 :(得分:0)

好吧,您将图像传递给按钮的text=选项。正如您可能从名称中猜到的那样,此选项仅指定按钮的文本。请改用image=选项。

代码仍然无法正常工作,因为您将对只加载在局部变量中的图像的引用存储起来 - 一旦函数返回,图像就会消失。 (Tkinter小部件与其显示的任何图像之间的连接完全在Python的世界观之外,因此不足以防止图像被垃圾收集。)您需要维护对每个图像的引用,只要小部件确实 - 通常是小部件的属性或全局变量。由于这里只处理了两个图像,因此全局变量比每次移动时从磁盘重新加载图像更有意义。