Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.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.TclError:image";pyimage3“;不';不存在_Python_Image_Tkinter - Fatal编程技术网

Python _tkinter.TclError:image";pyimage3“;不';不存在

Python _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

我需要显示图像,但终端始终返回: Tcl错误:映像“pyimage3”不存在

我不明白为什么,因为在一开始它是有效的,但当我修改其他元素时(没有修改我的图像),它开始出现bug

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
实例?你做过什么调查吗?我们几乎每周都会收到一次这样的问题。这很有效,谢谢!