Python Tkinter画布图片将无法显示

时间:2014-09-19 13:33:14

标签: python canvas tkinter

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()

我查看了我朋友的代码,用于将图像添加到画布(工作正常,图像正确显示),并且几乎一字一句地复制它,但只是替换了文件名。由于某种原因,图像不会显示。窗口显示,以及所有标签和按钮,我没有错误。画布就在那里,但图像根本不想显示。

'nsslogo.gif'与代码完全相同,所以我不明白为什么它不起作用。帮助

1 个答案:

答案 0 :(得分:1)

使PhotoImage个对象不被垃圾收集。

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

def Login():
    global W_Menu
    global img  # <----------
    W_Menu = Tk()
    ...