tkinter TclError: ошибка чтения растрового файла

Я пытаюсь установить значок приложения (python3 / tkinter) следующим образом:

Interface()
root.title("Quicklist Editor")
root.iconbitmap('@/home/jacob/.icons/qle_icon.ico')
root.resizable(0, 0)
root.mainloop()

независимо от того, что я делаю, я продолжаю получать сообщение об ошибке (Idle), говоря:

return self.tk.call('wm', 'iconbitmap', self._w, bitmap)
_tkinter.TclError: error reading bitmap file "/home/jacob/.icons/qle_icon.ico"

что я делаю не так?

4 ответов


проблема не в коде,а в значке. Я попытался создать xbm С другой программой, чем Gimp (некоторый редактор значков KDE), и хотя он выглядит ужасно уродливым, он показывает значок. Я думаю, мне нужно найти создателя, который дает "понятный" значок для моей программы Python.


редактировать

на iconbitmap метод оказался только черно-белым, поэтому он был бесполезен в конце концов.

после долгого поиска я нашел решение для установки цвет значка приложения для Python 3 (в Linux). Я нашел его здесь:

root = Tk()
img = PhotoImage(file='your-icon')
root.tk.call('wm', 'iconphoto', root._w, img)

Это старый вопрос, и есть много вещей, написанных об этом в интернете, но все это либо неверно, либо неполно, поэтому, получив его на работу, я подумал, что было бы хорошо записать мой фактический рабочий код здесь.

во-первых, вам нужно создать значок и сохранить его в двух форматах: Windows "ico" и Unix "xbm". 64 х 64 размер. XBM-это 1-битный формат-пиксели просто включены или выключены, поэтому нет цветов, нет серого. Реализации Linux tkinter принимают только XBM даже хотя каждый рабочий стол Linux поддерживает реальные значки,так что вам просто не повезло. Кроме того, спецификация XBM неоднозначна относительно того, представляют ли биты "on" черный или белый, поэтому вам может потребоваться инвертировать XBM для некоторых рабочих столов. Gimp хорош для их создания.

затем, чтобы поместить значок в заголовке, используйте этот код (Python 3):

import os
from tkinter import *
from tkinter.ttk import *

root = Tk()
root.title("My Application")
if "nt" == os.name:
    root.wm_iconbitmap(bitmap = "myicon.ico")
else:
    root.wm_iconbitmap(bitmap = "@myicon.xbm")

я попробовал это, и я не мог заставить его работать с помощью Windows 7.

нашел решение проблемы.

используйте ответ Джейкоба, но файл должен быть .gif Если вы используете мою ОС, (Windows 7) появляется.

сделайте 64x64 gif с помощью MS paint, сохраните его, используйте путь к файлу и бинго, работает.


это позволит вам использовать PNG-файлы в качестве значков, и он отображает цвет. Я тестировал его на Xubuntu 14.04, 32-бит с Python 3.4 (root ваш