Python Tkinter按钮不显示图像,尽管存在参考
在我用Python中的tkinter创建的基于GUI的国际象棋游戏中,我使用图像在网格按钮上显示国际象棋。image.png文件与程序位于同一目录下的文件夹中。当我运行代码时,按钮上不会显示图像。我发现这意味着我需要为变量保留一个引用。我的代码保留了一个引用,尽管图像不显示。(请记住,目前图像仅显示黑色棋子) 下面是创建按钮的代码(Python 3.7): 这是存储PhotoImage对象的代码:Python Tkinter按钮不显示图像,尽管存在参考,python,tkinter,python-3.7,chess,python-chess,Python,Tkinter,Python 3.7,Chess,Python Chess,在我用Python中的tkinter创建的基于GUI的国际象棋游戏中,我使用图像在网格按钮上显示国际象棋。image.png文件与程序位于同一目录下的文件夹中。当我运行代码时,按钮上不会显示图像。我发现这意味着我需要为变量保留一个引用。我的代码保留了一个引用,尽管图像不显示。(请记住,目前图像仅显示黑色棋子) 下面是创建按钮的代码(Python 3.7): 这是存储PhotoImage对象的代码: if __name__ == '__main__': master = tk.Tk()
if __name__ == '__main__':
master = tk.Tk()
P_ABBREVIATIONS = {'Pawn': tk.PhotoImage(r'icons\b_pawn.png').subsample(8, 8)} # For now only Pawn TODO: add other chess peice PhotoImage objects
if __name__ == '__main__':
Chess = ChessBoard(master)
master.mainloop()
有关整个代码,请转到:
问题在于您创建的图像不正确。需要将路径指定给
文件
选项。第一个位置参数被指定为图像的内部名称。因此,如果省略文件=
,则指定了一个名称,但没有为图像提供任何数据
tk.PhotoImage(file=r'icons\b_pawn.png')
^^^^^
请将此代码缩减为一个。如果问题在于图像的显示,我们只需要一个图像和显示它的代码。就这个问题而言,我们不关心主教、典当等,也不关心自我信息。@BryanOakley感谢您的评论我编辑了代码以不显示不需要的信息如果uuu name uuu=='uu main uu'块,则有两个
块。这是故意的吗?此外,我们无法运行此代码,因为您依赖棋盘,并且没有为此提供存根。@BryanOakley这是故意的,因为您在创建Tk实例之前无法创建PhotoImage对象,在这种情况下,我希望P_缩写存在,即使导入文件也是如此。至于棋盘,这个类对于这个问题来说并不重要。你确定你正在运行一个支持png的tkinter版本吗?作为一个实验,用gif替换png文件,看看代码是否有效。
tk.PhotoImage(file=r'icons\b_pawn.png')
^^^^^