Python _tkinter.TclError:image";pyimage3“;不';不存在
我需要显示图像,但终端始终返回: Tcl错误:映像“pyimage3”不存在 我不明白为什么,因为在一开始它是有效的,但当我修改其他元素时(没有修改我的图像),它开始出现bugPython _tkinter.TclError:image";pyimage3“;不';不存在,python,image,tkinter,Python,Image,Tkinter,我需要显示图像,但终端始终返回: Tcl错误:映像“pyimage3”不存在 我不明白为什么,因为在一开始它是有效的,但当我修改其他元素时(没有修改我的图像),它开始出现bug fenetre = Tk() fenetre.title("Cookie Game.py") fenetre.geometry("650x550") global_color = equ() color_b, color_f = global_color[0],global_co
fenetre = Tk()
fenetre.title("Cookie Game.py")
fenetre.geometry("650x550")
global_color = equ()
color_b, color_f = global_color[0],global_color[1]
fenetre.minsize(625,525)
fenetre.config(background = color_b)
...
box_centre = Frame(fenetre, bg=color_b)
box1 = Frame(box_centre, bg= color_b)
txt_1 = Label(box1, text="Cookie Game", font=("Courier New",50), bg=color_b, fg="white")
txt_1.pack() #side =LEFT / =RIGHT / =BOTTOM / =TOP
your_gold = Entry(box1, font=("Helvetica Neu",25), bg=color_b, fg="#F7B719",bd=0,highlightthickness=0)
your_gold.pack()
box1.pack(side=TOP)
#image
larg = 300 #largeur img
haut = 300 #hauteur img
img = PhotoImage(file="cookie_1.png").zoom(50).subsample(100)
canvas = Canvas(box_centre, height=haut, width=larg, bg=color_b, bd=0, highlightthickness=0)
canvas.create_image(larg/2, haut/2, image=img) # <-- line error
canvas.pack(pady = 25)
box_centre.grid(row=0, column=1,sticky=W)
fenetre=Tk()
fenetre.title(“Cookie Game.py”)
费内特几何(“650x550”)
全局颜色=eq()
颜色b,颜色f=全局颜色[0],全局颜色[1]
fenetre.minsize(625525)
fenetre.config(背景=颜色)
...
盒子中心=框架(fenetre,背景=颜色)
框1=框(框中心,背景=颜色)
txt_1=标签(框1,text=“Cookie Game”,font=(“Courier New”,50),bg=颜色,fg=“白色”)
txt_1.pack()#side=LEFT/=RIGHT/=BOTTOM/=TOP
您的黄金=条目(框1,字体=(“Helvetica Neu”,25),背景=颜色,前景=”#F7B719),bd=0,highlightthickness=0)
你的黄金包装()
盒子1.包装(侧面=顶部)
#形象
大=300#大
豪特=300#豪特伊姆格
img=PhotoImage(file=“cookie_1.png”).zoom(50).子样本(100)
画布=画布(长方体中心,高度=上,宽度=大,背景=颜色,bd=0,高光厚度=0)
canvas.create_image(larg/2,haut/2,image=img)#tkinter
为每个Tk()窗口使用tcl
不同的解释器。每个口译员都有自己的记忆。窗口的所有子项都由相同的tcl
解释器管理。当您不传入主参数tkinter
时,将使用第一个创建的tcl
解释器
考虑这个例子:
将tkinter作为tk导入
root_1=tk.tk()#注意现在这是默认的根
root_2=tk.tk()
label_1=tk.label(text=“Hi”)#默认情况下,`master=root_1`
标签_1.pack()
tk_img=tk.PhotoImage(file=“…”)#默认情况下`master=root_1`
label_2=tk.label(root_2,image=tk_img)#我们试图使用这个tcl解释器中不存在的东西。
标签_2.pack()
请注意,对于label_1
和tk_img
,我们没有传递master
。tkinter小部件的第一个参数通常是master
,因此对于label_2
,master是root_2
Tkinter无法创建没有主程序的小部件,因为小部件必须位于tcl解释器中,因此它会尝试猜测应该使用哪个tcl
解释器(始终是创建的第一个解释器)。因此,label_1
和tk_img
的主节点将是root_1
。因此,当我们告诉第二个解释器我们希望它使用变量tk\u img
(在这一行label\u 2=tk.label(root\u 2,image=tk\u img)
),它会失败,因为第二个解释器(对于第二个窗口)不知道另一个解释器。将master box\u center
添加到PhotoImage(file=“cookie\u 1.png”)
您是否创建了多个Tk
实例?你做过什么调查吗?我们几乎每周都会收到一次这样的问题。这很有效,谢谢!