TK图像没有出现

时间:2016-05-26 01:57:27

标签: python user-interface tkinter tkinter-canvas

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

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

2 个答案:

答案 0 :(得分:1)

您需要调用小部件的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()

答案 1 :(得分:1)

您需要使用Tk的几何管理机制之一来告诉它在其容器内渲染画布的位置。

最简单的方法是添加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