2016-05-26 17 views
1

Ich versuche, ein Bild auf einem TKinter-Canvas mit anderen Schaltflächen unter dem Bild zu setzen. Aus irgendeinem Grund kann ich dieses Bild nicht erscheinen lassen. Ich habe die Buttons noch nicht implementiert. Hier ist mein Code soweit.TK-Bild erscheint nicht

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

Antwort

1

Sie werden eine der Tk Geometrie-Management-Mechanismen nutzen, müssen es zu sagen, wo um die Leinwand in ihrem Container zu rendern.

wäre die einfachste Art und Weise self.canvas.pack() wie so hinzuzufügen sein:

#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

Sie benötigen die pack() (oder grid()) -Methode von Widgets rufen sie angezeigt werden:

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