TK 图像未出现

TK Image Not Appearing

我正在尝试将图像放在 TKinter canvas 上,图像下方有其他按钮。出于某种原因,我无法让这张照片出现。我还没有实现按钮。到目前为止,这是我的代码。

class GUI_Control:
    def __init__(self, player):
        self.player = player
        self.map = Tk()
        self.MAP_WIDTH = 600
        self.MAP_HEIGHT = 375
        #define map gui here
        self.canvas = Canvas(self.map, width=self.MAP_WIDTH, height=self.MAP_HEIGHT)
        self.map_picture = PhotoImage(file=r"images/archipelago.gif")
        self.canvas.create_image(0, 0, image=self.map_picture)
        #define level gui's here

    def open(self):
        self.map.mainloop()

    def hide_map(self):
        self.map.destroy()


#debugging
if __name__ == "__main__":
    gui = GUI_Control(Player.Player())
    gui.open()

您需要调用pack()(或grid())控件的方法才能显示它们:

class GUI_Control:
    def __init__(self, player):
        self.player = player
        self.map = Tk()
        self.MAP_WIDTH = 600
        self.MAP_HEIGHT = 375
        #define map gui here
        self.canvas = Canvas(self.map, width=self.MAP_WIDTH, height=self.MAP_HEIGHT)
        self.canvas.pack(expand=YES, fill=BOTH)  # ADDED
        self.map_picture = PhotoImage(file="images/archipelago.gif")
        self.canvas.create_image(0, 0, image=self.map_picture, anchor='nw')
        #define level gui's here

    def open(self):
        self.map.mainloop()

    def hide_map(self):
        self.map.destroy()

#debugging
if __name__ == "__main__":
    gui = GUI_Control(Player.Player())
    gui.open()

您需要使用 Tk 的一种几何管理机制来告诉它在容器中的何处呈现 canvas。

最简单的方法是像这样添加 self.canvas.pack()

    #define map gui here
    self.canvas = Canvas(self.map, width=self.MAP_WIDTH, height=self.MAP_HEIGHT)
    self.canvas.pack()
    self.map_picture = PhotoImage(file=r"images/archipelago.gif")
    self.canvas.create_image(0, 0, image=self.map_picture)
    #define level gui's here