Tkinter 是一個流行的 Python GUI 函式庫,在函數中建立時偶爾會遇到顯示影像的問題。此行為源自於 Tkinter 處理影像引用等局部變數的方式。
考慮以下成功顯示影像的程式碼:
import tkinter root = tkinter.Tk() canvas = tkinter.Canvas(root) canvas.grid(row = 0, column = 0) photo = tkinter.PhotoImage(file = './test.gif') canvas.create_image(0, 0, image=photo) root.mainloop()
但是,在創建時類方法中的影像,影像消失。
import tkinter class Test: def __init__(self, master): canvas = tkinter.Canvas(master) canvas.grid(row = 0, column = 0) photo = tkinter.PhotoImage(file = './test.gif') canvas.create_image(0, 0, image=photo) root = tkinter.Tk() test = Test(root) root.mainloop()
出現此問題是因為局部變數 photo 表示對影像的引用。在類別方法中,此引用會遺失,因為執行方法後照片超出範圍。
要解決此問題,請在類別實例中保存對照片的持久引用:
import tkinter class Test: def __init__(self, master): canvas = tkinter.Canvas(master) canvas.grid(row = 0, column = 0) self.photo = tkinter.PhotoImage(file = './test.gif') canvas.create_image(0, 0, image=self.photo) root = tkinter.Tk() test = Test(root) root.mainloop()
透過將引用儲存在self.photo 中,它在類別實例的生命週期內持續存在,確保影像保持可見。
以上是為什麼在類別方法中建立 Tkinter 映像時會消失?的詳細內容。更多資訊請關注PHP中文網其他相關文章!