• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    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)

            结果删除按钮不显示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之按钮的使用,开关方法
    上一篇:Pytorch可视化之Visdom使用实例
    下一篇:Django的get_absolute_url方法的使用
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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