【问题标题】:Tkinter: failed to create color bitmap for "...\logo.ico"Tkinter:未能为“...\logo.ico”创建颜色位图
【发布时间】:2021-12-28 19:37:23
【问题描述】:

我需要一些关于 Tkinter 中图像的帮助.. 首先,我让它全部运行,但它不起作用,因为我需要一些“特殊代码”将媒体放入 .exe(--onefile),所以我不得不将它重写为这段代码:

def resource_path(relative_path):
    """ Get absolute path to resource, works for dev and for PyInstaller """
    try:
        # PyInstaller creates a temp folder and stores path in _MEIPASS
        base_path = sys._MEIPASS
    except Exception:
        base_path = os.path.abspath(".")

    return os.path.join(base_path, relative_path)

# Window Setup
root = tk.Tk()
root.title('Title')
root.geometry("300x300")
root.resizable(height=0, width=0)
root.frame()
photoPath = resource_path('logo.png')
iconPath = resource_path('logo.ico')
photo = Image.open(photoPath)
icon = tk.PhotoImage(iconPath)
root.iconphoto(False, icon)

("resource_path" 代码来自:https://dev.to/eshleron/how-to-convert-py-to-exe-step-by-step-guide-3cfi)

我什至尝试将图标制作为 png,但随后 tkinter 说“不能使用 logo.png 作为 iconphoto:不是照片图像”

然后我以 PhotoImage 的方式编辑代码,它再次将颜色位图错误丢给我...

我做错了什么?

【问题讨论】:

  • 显示任何 .ico 文件的最简单方法是使用 root.iconbitmap(icon)

标签: python image tkinter


【解决方案1】:

想通了,我只是有一个损坏的 .ico 文件............ 这就是现在对我有用的代码:

# Window Setup
root = tk.Tk()
root.title('Title')
root.geometry("300x300")
root.resizable(height=0, width=0)
root.frame()
photoPath = resource_path('logo.png')
iconPath = resource_path('logo.ico')
photo = tk.PhotoImage(file=photoPath)
img = tk.PhotoImage(file=iconPath)
root.tk.call('wm', 'iconphoto', root._w, img)

【讨论】:

    猜你喜欢
    • 2016-08-19
    • 1970-01-01
    • 1970-01-01
    • 2021-09-20
    • 1970-01-01
    • 1970-01-01
    • 2018-06-20
    • 2019-06-17
    • 2015-01-25
    相关资源
    最近更新 更多