Python Tkinter画布图像赢得';不显示

Python Tkinter画布图像赢得';不显示,python,canvas,tkinter,Python,Canvas,Tkinter,我看了我朋友的代码,在画布上添加了一个图像(可以正常工作,图像显示正确),几乎是逐字复制,但只是替换了文件名。由于某种原因,图像没有显示。窗口显示在所有标签和按钮旁边,我没有发现任何错误。画布在那里,但图像根本不想显示 “nsslogo.gif”与代码位于完全相同的目录中,因此我不理解它为什么不起作用。帮助?使PhotoImage对象不被垃圾收集 最简单的方法是将变量声明为全局变量 def Login(): global W_Menu W_Menu = Tk() W_Menu.

我看了我朋友的代码,在画布上添加了一个图像(可以正常工作,图像显示正确),几乎是逐字复制,但只是替换了文件名。由于某种原因,图像没有显示。窗口显示在所有标签和按钮旁边,我没有发现任何错误。画布在那里,但图像根本不想显示


“nsslogo.gif”与代码位于完全相同的目录中,因此我不理解它为什么不起作用。帮助?

使
PhotoImage
对象不被垃圾收集

最简单的方法是将变量声明为全局变量

def Login():
   global W_Menu
   W_Menu = Tk()
   W_Menu.geometry('195x300+600+200')
   W_Menu.title("NSS DB")
   A0 = Canvas(W_Menu, width='160', height='160')
   A0.pack()
   img = PhotoImage(file="nsslogo.gif")
   A0.create_image(0,0, image=img)
   A3 = Label(W_Menu, text = "Username")
   A3.pack()
   A4 = Entry(W_Menu, bd = 3)
   A4.pack()
   A5 = Label(W_Menu, text = "Password")
   A5.pack()
   A6 = Entry(W_Menu, show = "*", bd = 3)
   A6.pack()
   A7 = tkinter.Button(W_Menu, text = "Log In", command = Reaction)
   A7.pack()
   A8 = tkinter.Button(W_Menu, text = "Register", command = RegisterMenu)
   A8.pack()
def Login():
全局W_菜单

这个问题的全球img变体已经在这个网站上被多次询问和回答。问这个问题之前你做过搜索吗?也许我们可以改进原始问题,使它们更容易找到。
def Login():
    global W_Menu
    global img  # <----------
    W_Menu = Tk()
    ...