【问题标题】:Python Tkinter use iconbitmap without needing a filepath (like a picture url)Python Tkinter 使用 iconbitmap 不需要文件路径(如图片 url)
【发布时间】:2022-02-12 07:34:53
【问题描述】:

我试图在我的 Tkinter 项目中包含一个图标位图,但我希望它是一个单独的 .exe 文件。出于这个原因,我不想使用其他需要的文件(比如在同一个目录中)。我的想法是,只使用图片的 URL。我发现的是:

root.tk.call('wm', 'iconphoto', root._w, tk.PhotoImage(file="icon.png"))

如何改用 URL?或者,除了作为单独的文件之外,还有其他完全不同的方式来存储图标。

【问题讨论】:

  • 这是一个已经解决的解决方案。 stackoverflow.com/questions/38173526/…
  • 可以将图像作为 base64 编码的数据直接嵌入到您的代码中。这是一个可以接受的答案,还是您只想从 URL 中获取它?
  • @BryanOakley 对我来说如何并不重要。我唯一想要的是,我可以在没有任何辅助文件的情况下将图像显示为 iconphoto。所以我认为编码它会是一个很好的解决方案。你能解释一下怎么做吗?

标签: python tkinter url icons


【解决方案1】:

您可以将 PhotoImage 数据嵌入为 base64 并将其直接包含在代码中。获取任何受支持文件类型的文件的内容(例如:gif、png 用于较新版本的 python)并使用 base64 对其进行编码。

下面的代码定义了一些图像数据,然后用它来创建一个PhotoImage。生成的图像可以在任何可以使用PhotoImage 的地方使用。

image_data = """
    R0lGODlhGAAYAPZvAAIaLgwmOwcnQQcoQBMxSBc4VBQ6Vhk7VRY9WhY+XSI4RxJC
    ZRRCZi9KYSFNbzJUbSJOcCZVeiZUeyBWfy1Zei5afB1Wgh1XgyFXgDpjgSVjkyZl
    liZnmCxrmixsmjZtlSptoCpuoSxxqCxzqjh1oTV3qDR4qD5/rjV8tDV+tUFlgUZp
    hFNwhVVyh0ZzlUh7nnB8hUF8pkJ8pkx+oTuBuFmBn3SEkHeOn3mNnUeBqUiBqUqD
    q1CBpFKCpVuDoVyEokeGs0eHs0aKvkaMvlGOuGqKom+Pp3yUpziEwTiFwz2KxT+K
    xE6VylKUw1qaxV6fx0CQ0E+b1lCd1l6h0Wiq1Wyu12Wp22aq3FOi4F2s5WCt5W64
    7XW24Xu743u/6omfsZymroqhso6jtJynsJ2psaS1w6S2xIvH7YvI7d/h5ODi5eDk
    5+Dm6uLn7OPo7QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAACH+SUNvcHlyaWdodCBJTkNPUlMgR21iSCAod3d3Lmljb25l
    eHBlcmllbmNlLmNvbSkgLSBVbmxpY2Vuc2VkIHByZXZpZXcgaW1hZ2UAIfkEBQAA
    bwAsAAAAABgAGAAAB9eAb4KDhIWGh4iJiouMjY6PiGkwCgAACjBqj2ABBSw3Ny0H
    AWONYwIqYmFfX2FiKwNki2kEFEZFRba3RhUEa4o2Cy41NT/FPsMuDDaKDRYfLzM8
    PT0zMy8fFw2KBRoeJDI6Ojs5MSQdGwaKCCAmJ0FE8ERAJyUhCYoPIjRDTU5PT06a
    CKEx4oEiHBuWMJlCpUoVKlOYKOFwQxEbB0ikXOHSpQsXK1GSQGizyIwFKFq8oDnj
    JQsUDGYalYmAYsqWLVhSSIjpqM2RDBMuZDjiBpLRo0iTKjUaCAA7
"""

the_image = tk.PhotoImage(data=image_data)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-03
    • 2017-01-28
    • 1970-01-01
    • 2014-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多