为什么我的图像出现在Tkinter的错误窗口上?

时间:2018-02-25 10:41:05

标签: python tkinter

所以我试图制作一个基于文本的游戏,但也希望将图像合并到其中,我有一个主菜单,一个始终打开的窗口,然后是一个游戏窗口,应该有图像,但出于某种原因,它会出现在菜单窗口中。有谁知道为什么?

def menu():

    master = Tk()
    master.geometry("350x300")
    master.wm_iconbitmap("zombie.ico")
    master.configure(background = '#484a2c')
    master.title("Menu")

    def game():  

        master = Tk()
        master.geometry("800x500")
        master.title("Game")
        master.wm_iconbitmap("zombie.ico")
        master.configure(background = '#484a2c')

        image = PhotoImage(file="Kitchenimage.gif")
        label5 = Label(image=image)
        label5.image = image
        label5.pack()

  label = Label(master, text = "Zombie Mansion", background = '#484a2c',  
  font = ("AR CHRISTY", 30))
  label.pack()

  b = Button(master,text = "Play Game", height = 1, width = 10)
  b.config(background = '#484a2c', activebackground = '#484a2c',  font = 
  ("AR CHRISTY", 14), command = get_username)
  b.place(x = 120, y = 70)


mainloop()

1 个答案:

答案 0 :(得分:0)

  

“为什么我的图片出现在Tkinter的错误窗口上?”

假设您的代码中某处有另一个Tk实例,就像您所说的主菜单那样,您没有向我们展示:

main = Tk()

除了master = Tk()方法中的game之外,那是因为当你实例化小部件时没有明确地传递父小部件,如:

label5 = Label(image=image)

然后小部件的父级默认为Tk正在运行mainloop的实例,在上述情况下可能是main。默认情况下,小部件显示在其父级下,因此原因。

明确传递父级,如:

label5 = Label(master=main, image=image)

label5 = Label(master, image=image)

在大多数情况下,如果不是所有个案,you shouldn't have multiple instances of Tk。如果您需要其他窗口,请使用Toplevel小部件。