【发布时间】:2013-12-13 14:35:29
【问题描述】:
我在使用在屏幕上显示图像两秒钟然后被销毁的功能时遇到问题。当程序运行函数时,初始调用程序正常工作,但如果随后通过 tkinter 中内置的按钮调用该函数,则会出现错误。
appcwd = os.getcwd()
user32 = ctypes.windll.user32
screensize = user32.GetSystemMetrics(0), user32.GetSystemMetrics(1)
size = str(screensize[0])+'x'+str(screensize[1])
def wlcm_scrn(event=None):
def destroy_wlcm(event=None):
wlcm_scrn.destroy()
global appcwd
global screensize
wlcm_scrn = tkinter.Tk()
file=appcwd+"\\Run_Files\\splash.gif"
splsh_img = tkinter.PhotoImage(file=file)
splosh = tkinter.Label(wlcm_scrn,image=splsh_img)
wlcmh = splsh_img.height()/2
wlcmw = splsh_img.width()/2
splosh.pack()
wlcm_scrn.config(bg='black')
wlcm_scrn.overrideredirect(True)
wlcm_scrn.bind("<Escape>",destroy_wlcm)
wlxym = '+'+str(int((screensize[0]/2)-wlcmw))+'+'+str(int((screensize[1]/2)-wlcmh))
wlcm_scrn.geometry(wlxym)
wlcm_scrn.wm_attributes("-topmost", 1)
wlcm_scrn.after(2000,destroy_wlcm)
wlcm_scrn.mainloop()
wlcm_scrn() #Call through procedure.
调用函数的按钮。
view_img = tkinter.Button(cfrm,text='Show splash image',command=wlcm_scrn)
通过按钮命令调用时的错误消息。
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python33\lib\tkinter\__init__.py", line 1475, in __call__
return self.func(*args)
File "C:\Python33\POS_Solution\Rattle_Hum_POS.py", line 1755, in run_wlcm_scrn
wlcm_scrn()
File "C:\Python33\POS_Solution\Rattle_Hum_POS.py", line 34, in wlcm_scrn
splosh = tkinter.Label(wlcm_scrn,image=splsh_img)
File "C:\Python33\lib\tkinter\__init__.py", line 2596, in __init__
Widget.__init__(self, master, 'label', cnf, kw)
File "C:\Python33\lib\tkinter\__init__.py", line 2075, in __init__
(widgetName, self._w) + extra + self._options(cnf))
_tkinter.TclError: image "pyimage3" doesn't exist
什么是“pyimage3”,为什么不存在? 任何帮助将不胜感激。谢谢。
【问题讨论】:
-
我不认为这是文件路径的问题,因为我使用的是 os.getcwd(),并且它是第一次工作。
-
还有 Bennett_1 的一点,他说“......文件引用在之前的运行中不正确。”我认为这不适用,因为它在第一次运行时有效,并且文件引用没有改变。
-
我可以按程序运行它多次,并且每次都有效,因此必须将其作为导致问题的 tkinter 按钮上的事件调用。
标签: python windows python-3.x tkinter