这是发现错误的地方:
global backbuttonimg
backbuttonimg = PhotoImage(file="backbutton.gif")
C6 = tkinter.Button(W_CheckDates, image=backbuttonimg, command = CheckDatesBack)
C6.pack()
我不明白为什么这不起作用。我的程序中有另一张图片:
def Login():
global W_Menu
W_Menu = Tk()
W_Menu.geometry('160x310+600+200')
W_Menu.title("NSS DB")
A0 = Canvas(W_Menu, width='160', height='160')
A0.pack()
global img
img = PhotoImage(file="nsslogo.gif")
A0.create_image(80,80, image=img)
当我在最初调用之后尝试调用上面的定义时(例如当我的程序注销时),我也得到了类似的错误,所以我已经重新调整,所以窗口只是取消图像而不是再次调用它,而我不要再次收到错误。但是我很困惑为什么我现在的代码前一部分出现错误,因为按钮根本不会显示它是否第一次被调用。对不起,如果这有点模糊,请询问我是否有足够的细节解释。提前谢谢。
P.S。我看过其他类似问题的线程,但没有一个适用于我。
答案 0 :(得分:7)
好的,所以你说login
功能可以工作一次,那么它就不能再工作了。这里可以使用tk.Toplevel()
代替tk.Tk()
来解决问题,请参阅:why python photoimages don't exist?和tkinter.TclError: image "pyimage3" doesn't exist
这些主题提到了如何同时运行两个Tk()
个实例,您必须使用Toplevel()
。
为什么这些线程不适用于你(我认为他们确实......)?但只是一个提示,如果你声明他们不适用于你,那么说明理由,这有助于使你的问题更清楚。此外,当您的问题与特定错误有关时,请添加完整的追溯。
希望这有点帮助。
答案 1 :(得分:0)
为尝试过上述方法但未成功的任何人添加此内容。如果在某些环境中运行脚本时路径错误,则将保留文件路径。我注释掉了所有东西,从我第一次使用PhotoImage到窗口mainloop,运行脚本,关闭生成的gui,取消注释代码,运行,然后按预期显示了图像。