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