gpt4 book ai didi

python - 在 NewWindow 上创建图像还为时过早

转载 作者:行者123 更新时间:2023-12-01 08:43:06 24 4
gpt4 key购买 nike

我想在新窗口中显示图像,但出现错误。

这是我的错误代码

photo = PhotoImage(file='img/dog')
File "C:\Users\Hyojae\Anaconda3\lib\tkinter\__init__.py", line 3542, in __init__
Image.__init__(self, 'photo', name, cnf, master, **kw)
File "C:\Users\Hyojae\Anaconda3\lib\tkinter\__init__.py", line 3486, in __init__
raise RuntimeError('Too early to create image')
RuntimeError: Too early to create image

这是我的代码示例。

非常感谢您的帮助。

from tkinter import *

def messageWindow():
win = Tk()
win.geometry('300x200')

root.destroy()


photo2 = PhotoImage(file="img/dog1.gif")
label1 = Label(win, image=photo2)
label1.grid(row=6)

Button(win, text='OK', command=win.destroy).grid(row = 5, columnspan = 2)

win.mainloop()

root = Tk()
photo = PhotoImage(file="img/dog2.gif")
label1 = Label(root, image=photo)
label1.pack()


Button(root, text='Bring up Message', command=messageWindow).pack()


root.mainloop()

最佳答案

你得到这样的区域是因为你在图像加载到窗口之前调用了root.destroy。而且你不能使用两个TK实例,你必须使用Toplevel检查链接以更好地理解。

除此之外,要在toplevel中显示图像,您需要为其创建引用,这样它就不会被垃圾收集Display image in Toplevel window我是这样做的label1.image = sub

我还使用image subsample来演示如何调整图像大小sub = photo2.subsample(5, 5)检查此link以了解它

from tkinter import *

def messageWindow():
win = Toplevel()
win.geometry('300x200')

root.withdraw() # THIS HIDE THE WINDOW


photo2 = PhotoImage(file="img/dog1.gif")
sub = photo2.subsample(5, 5)
label1 = Label(win, image=sub)
label1.image = sub
label1.grid(row=6)

Button(win, text='OK', command=win.destroy).grid(row = 5, columnspan = 2)



root = Tk()


photo = PhotoImage(file="img/dog1.gif")
sub1 = photo.subsample(3,3)
label1 = Label(root, image=sub1)
label1.pack()


B = Button(root, text='Bring up Message', command=messageWindow)
B.place(x=200, y=300)


root.mainloop()

关于python - 在 NewWindow 上创建图像还为时过早,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53425425/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com