无法在函数中显示图像 tkinter

-1 投票
1 回答
57 浏览
提问于 2025-04-14 17:03

这是我的代码

def new_grille():
  global cc
  global tab
  global tableau

  x = cc[0]
  y = cc[1]


  fenetre = tk.Tk()
  fenetre.title('Gomoku : Coup joueur Blanc')
  fenetre.attributes('-fullscreen', True)
  fenetre.bind('<Escape>', lambda e: fenetre.destroy())
  fenetre.config(bg='#FFFFFF')


  tableau = tk.Canvas(fenetre, width = 1700, height = 1500, bg ="#FFFFFF")
  tableau.pack(side = tk.BOTTOM, pady=100)

  img = Image.open('boutton quitter.png')
  img_quitter = ImageTk.PhotoImage(img)


  boutton_quitter = tk.Button(fenetre, width=45, height=7,image = img_quitter, command=lambda x="": on_closing())
  boutton_quitter.image = img_quitter
  boutton_quitter.place(x=1500, y=100)
  boutton_quitter.pack()

我想在'boutton_quitter'按钮上显示一张图片('boutton_quitter.png'),但是出现了一个错误(_tkinter.TclError: image "pyimage13" doesn't exist),我尝试了很多方法,但都没有成功,请帮帮我 :)

我看过不同的解决方案,比如使用toplevel方法和尝试把图片存储在一个全局函数里,但要么我搞错了,要么就是不管用。

1 个回答

0

你不能同时使用两种布局管理器,比如 boutton_quitter.place(x=1500, y=100)boutton_quitter.pack()。你需要选择一种布局管理器来满足你的需求。

当使用 fenetre.attributes('-fullscreen', True) 时,不要把布局管理器的值设置得太高,比如使用 place()。使用 pack() 就可以满足你的需求。

我评论的是我们不需要的部分。

代码片段:

import tkinter as tk
from PIL import Image, ImageTk

#cc = 0

def new_grille():
  #global cc
  #global tab
  global tableau


  fenetre = tk.Tk()
  fenetre.title('Gomoku : Coup joueur Blanc')
 # fenetre.attributes('-fullscreen', True)
  fenetre.bind('<Escape>', lambda e: fenetre.destroy())
  fenetre.config(bg='#FFFFFF')


  tableau = tk.Canvas(fenetre, width = 700, height = 500, bg ="#FFFFFF")
  tableau.pack(side = tk.BOTTOM, pady=100)

  img = Image.open('p2.png')
  img_quitter = ImageTk.PhotoImage(img)

  boutton_quitter = tk.Button(fenetre, width=250, height=350,image = img_quitter, command=lambda x="": on_closing())
  boutton_quitter.image = img_quitter
  boutton_quitter.place(x=100, y=100)
  #boutton_quitter.pack()
  fenetre.mainloop()

if __name__ == "__main__":
    new_grille()

截图:

在这里输入图片描述

撰写回答