【问题标题】:TK Image Not AppearingTK 图像未出现
【发布时间】:2016-05-26 01:57:26
【问题描述】:

我正在尝试将图像放在 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()

【问题讨论】:

    标签: python user-interface tkinter tkinter-canvas


    【解决方案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
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-10-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-31
        • 2018-04-25
        • 2016-02-22
        相关资源
        最近更新 更多