Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Tkinter按钮不显示图像,尽管存在参考_Python_Tkinter_Python 3.7_Chess_Python Chess - Fatal编程技术网

Python Tkinter按钮不显示图像,尽管存在参考

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()

在我用Python中的tkinter创建的基于GUI的国际象棋游戏中,我使用图像在网格按钮上显示国际象棋。image.png文件与程序位于同一目录下的文件夹中。当我运行代码时,按钮上不会显示图像。我发现这意味着我需要为变量保留一个引用。我的代码保留了一个引用,尽管图像不显示。(请记住,目前图像仅显示黑色棋子)

下面是创建按钮的代码(Python 3.7):

这是存储PhotoImage对象的代码:

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')
              ^^^^^