主页 > 知识库 > Python3.8 + Tkinter: Button设置image属性不显示的问题及解决方法

Python3.8 + Tkinter: Button设置image属性不显示的问题及解决方法

热门标签:地图标注与注销 电梯新时达系统外呼显示e 旅游厕所地图标注怎么弄 成都呼叫中心外呼系统哪家强 南昌地图标注 宿州电话机器人哪家好 无锡智能外呼系统好用吗 百应电话机器人总部 西青语音电销机器人哪家好

        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)

        结果删除按钮不显示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)

        结果删除按钮的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属性不显示的问题的文章就介绍到这了,更多相关Python Tkinter按钮不显示内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
  • python tkinter 获得按钮的文本值
  • python基于tkinter点击按钮实现图片的切换
  • 在python tkinter界面中添加按钮的实例
  • Python tkinter布局与按钮间距设置方式
  • Python的Tkinter点击按钮触发事件的例子
  • Python 窗体(tkinter)按钮 位置实例
  • python3 tkinter实现点击一个按钮跳出另一个窗口的方法
  • python-tkinter之按钮的使用,开关方法

标签:许昌 渭南 潍坊 雅安 七台河 辛集 西安 赣州

巨人网络通讯声明:本文标题《Python3.8 + Tkinter: Button设置image属性不显示的问题及解决方法》,本文关键词  Python3.8,Tkinter,Button,设置,;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 下面列出与本文章《Python3.8 + Tkinter: Button设置image属性不显示的问题及解决方法》相关的同类信息!
  • 本页收集关于Python3.8 + Tkinter: Button设置image属性不显示的问题及解决方法的相关信息资讯供网民参考!
  • 推荐文章