代码之家  ›  专栏  ›  技术社区  ›  miXo

t不将图像绘制到画布上

  •  1
  • miXo  · 技术社区  · 6 年前

    tkinter不会从其他方法将图像绘制到画布上。

    例1有效,例2无效。有人能解释一下为什么吗?

    例1

    def init_gui(self):
        window = tkinter.Tk()
        self.canvas = tkinter.Canvas(self.window, width=1000, height=500)
    
        photo = PIL.ImageTk.PhotoImage(image=PIL.Image.fromarray(self.img))
        self.canvas.create_image(0, 0, image=photo, anchor=tkinter.NW)
        self.canvas.pack()
    
        window.mainloop()
        pass
    

    例2

    def init_gui(self):
        window = tkinter.Tk()
        self.canvas = tkinter.Canvas(self.window, width=1000, height=500)
    
        self._draw_img() # the exact same code, only in another method
    
        window.mainloop()
        pass
    def _draw_img(self):
        photo = PIL.ImageTk.PhotoImage(image=PIL.Image.fromarray(self.img))
        self.canvas.create_image(0, 0, image=photo, anchor=tkinter.NW)
        self.canvas.pack()
        pass
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   Felix    6 年前

    如果我没记错的话,当您显示的图像超出范围时,Tkinter会出现问题(因为它是一个局部变量)。试着做 photo 类的属性(通过替换 照片 具有 self.photo 在你 _draw_image 函数),看看是否解决了问题。

    这有帮助吗?

    编辑

    有关更完整的解释,请访问此网站: http://effbot.org/pyfaq/why-do-my-tkinter-images-not-appear.htm