在Tkinter 這個流行的Python GUI 庫中,經常會遇到創建圖像時無法顯示的情況在函數或類別方法中。讓我們深入研究一下這種奇怪行為背後的原因。
在類別之外使用 Tkinter 時,建立和顯示影像非常簡單。如第一個程式碼片段所示,只需使用 tkinter.PhotoImage 聲明圖像並將其指派給畫布即可。但是,當程式碼包裝在類別中時(如第二個片段所示),圖像將停止渲染。
問題的關鍵在於理解 Python 的變數生命週期。局部變量,例如所提供範例中的 photo 變量,僅存在於定義它們的函數或方法的範圍內。對於類別而言,photo 變數在建立類別實例後被銷毀,使得 Tkinter 無法使用不再存取它。
要解決這種情況,有必要在函數或方法的範圍之外儲存對影像的引用。這可以透過將 photo 變數指派給類別實例本身來實現。如所提供的解決方案所示:
self.photo = tkinter.PhotoImage(...)
藉由這樣做,photo 成為一個實例變量,並且其生命週期在類別實例存在的時間內延長。這允許 Tkinter 訪問圖像並按預期顯示它。
如果遇到影像無法出現在 Tkinter 中的類似問題,請記住檢查影像變數的範圍並確保它們持續超出中的函數或方法它們是由它們創建的。
以上是為什麼我的 Tkinter 圖像沒有在類別中顯示?的詳細內容。更多資訊請關注PHP中文網其他相關文章!