gpt4 book ai didi

python - 过程在导入时的执行方式与在其 native 模块中运行时的执行方式不同

转载 作者:行者123 更新时间:2023-12-01 05:55:00 24 4
gpt4 key购买 nike

我有这个代码:

def Annabeth():
Annabeth= Tk()
Annabeth.geometry('450x450')
says = Label(Annabeth,text ='I was just making a general statement!')
says.pack(side=BOTTOM)
img = ImageTk.PhotoImage(Image.open('C:/Users/Geekman2/Pictures/Pictures/Annabeth.jpg'))
image1 = Label(Annabeth,image=img)
image1.pack()
Annabeth.mainloop()

它驻留在模块中

rox

当我调用时

Annabeth()

我的窗口出现,它显示图像,一切正常。当我从另一个模块使用代码时

from rox import*
Annabeth()

效果很好但是当我使用这段代码时

def callback():
Annabeth()

game = Tk()
game.geometry('50x50+700+100')
Button1 = Button(game,text = '1',command =callback )
Button1.pack(side=LEFT)


game.mainloop()

窗口显示,但图片未显示,并且出现错误

File "C:\Python27\lib\lib-tk\Tkinter.py", line 1974, in __init__
(widgetName, self._w) + extra + self._options(cnf))
TclError: image "pyimage1" doesn't exist

我一生都无法弄清楚是什么导致了这一点,显然我不应该在 GUI 程序中拥有多个主循环,但是我该怎么做呢?

最佳答案

您不应该在程序中多次实例化 Tk() 。如果您想要多个窗口,您可以考虑使用 Toplevel

顺便说一句,它将解决您的几个主循环问题,因为 Toplevel 实例将在与 game 相同的主循环中运行。

具体发生的情况是,ImageTk.PhotoImage 在已创建的第一个 Tcl/Tk 解释器中创建图像。因此,在第二个 Tcl/Tk 实例中运行的标签 image1 无法到达该图片。

关于python - 过程在导入时的执行方式与在其 native 模块中运行时的执行方式不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13022995/

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