2016-05-26 40 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() 
関連する問題