• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

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

python 搞代码 4年前 (2022-01-07) 18次浏览 已收录 0个评论

这篇文章主要介绍了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-600', 0))) self.del_button.bind('', self.delete_selected_image) self.del_button.grid(row=0, column=0, sticky=tk.W)

        结果删除按钮不显示image,按钮上显示空白来源[email protected]搞@^&代*@码)网:

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-600', 0)) self.del_button.config(image=del_icon) self.del_button.bind('', 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按钮不显示内容请搜索gaodaima搞代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持gaodaima搞代码网

以上就是Python3.8 + Tkinter: Button设置image属性不显示的问题及解决方法的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Python3.8 + Tkinter: Button设置image属性不显示的问题及解决方法

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址