2016-05-26 34 views
1

我想把图像放在与图像下的其他按钮的TKinter画布上。出于某种原因,我无法让这张照片出现。我还没有实现按钮。这是我迄今为止的代码。TK图像不出现

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

回答

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