91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何解決Python3.8+Tkinter: Button設置image屬性不顯示的問題

發布時間:2021-08-09 13:46:03 來源:億速云 閱讀:129 作者:小新 欄目:開發技術

這篇文章主要介紹了如何解決Python3.8+Tkinter: Button設置image屬性不顯示的問題,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

        Bug如題目所描述。嘗試過將按鈕的image指向的變量del_icon設置為global全局變量,但是不成功,會提示如“

AttributeError: 'PhotoImage' object has no attribute '_PhotoImage__photo'

”的錯誤。代碼1是導致bug的源頭。

        代碼1:

#!/bin/env python3
from PIL import ImageTk
import tkinter as tk
...
self.del_button = tk.Button(self.frame, text='DEL', width=20, height=20)
self.del_button.config(image=ImageTk.PhotoImage(resize(os.getcwd() + '/delete.png', 0)))
self.del_button.bind('<Button-1>', self.delete_selected_image)
self.del_button.grid(row=0, column=0, sticky=tk.W)

如何解決Python3.8+Tkinter: Button設置image屬性不顯示的問題

        結果刪除按鈕不顯示image,按鈕上顯示空白:

如何解決Python3.8+Tkinter: Button設置image屬性不顯示的問題

del_button的image不顯示

        嘗試將del_button的image指向的變量設置為局部變量,即下面所展示的代碼2。

        代碼2:

#!/bin/env python3
from PIL import ImageTk
import tkinter as tk
...
self.del_button = tk.Button(self.frame, text='DEL', width=20, height=20)
del_icon = ImageTk.PhotoImage(resize(os.getcwd()+'/delete.png', 0))
self.del_button.config(image=del_icon)
self.del_button.bind('<Button-1>', self.delete_selected_image)
self.del_button.grid(row=0, column=0, sticky=tk.W)

如何解決Python3.8+Tkinter: Button設置image屬性不顯示的問題

        結果刪除按鈕的image顯示正常:

如何解決Python3.8+Tkinter: Button設置image屬性不顯示的問題

del_button的image顯示正常

         筆記:

                不明所以的bug。判斷潛在原因是:GC的問題。image屬性需要指向明確的內存地址。方法返回的臨時變量地址調用后即被回收,導致image指向空地址。


        resize()的代碼:

#!/bin/env python3
from PIL import Image
 
def resize(path):
    image = Image.open(path)
    raw_width, raw_height = image.size[0], image.size[1]
    min_height = 20
    min_width = int(raw_width * min_height / raw_height)
    return image.resize((min_width, min_height))

感謝你能夠認真閱讀完這篇文章,希望小編分享的“如何解決Python3.8+Tkinter: Button設置image屬性不顯示的問題”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

醴陵市| 安塞县| 大宁县| 岳阳县| 卢龙县| 广昌县| 淅川县| 海伦市| 全椒县| 阳高县| 石楼县| 雷山县| 金乡县| 金溪县| 黔东| 咸宁市| 宣武区| 来凤县| 英吉沙县| 开原市| 临朐县| 安西县| 会宁县| 肥城市| 商河县| 永定县| 密云县| 衡南县| 建阳市| 双辽市| 定襄县| 邮箱| 丹凤县| 德阳市| 都昌县| 永嘉县| 阳城县| 改则县| 中牟县| 江城| 垦利县|