Python - wm_iconbitmap problem

Dakle, ako je ko radio sa tkinter modulom (ili Tkinter za Python 2.x), mozda se i susreo sa ovim problemcicom.

tkinter ima metodu kojom se mijenja defaultna ikona u gornjem lijevom uglu prozora. Ta metoda je wm_iconbitmap(’<path to file.ico’>)

Ako se zamjeni full pathom (ili samo nazivom fajla ako se on nalazi u istom direktoriju gdje i .py modul), ikona u gornjem lijevom uglu bi trebala biti taj .ico fajl.

Pri tome, .ico fajl bi trebao biti dimenzija 16x16.

Eh sada, ovo sve lijepo zvuci u teoriji. U praksi, radi bez problema na Windowsu. Na Linuxu se medjutim desavaju cudne stvari.

Evo najjednostavniji primjer:

[code]from tkinter import * #@UnusedWildImport

root = Tk()
root.wm_iconbitmap(‘icon.ico’)
root.mainloop()[/code]
Ovako stoji i u zvanicnoj dokumentaciji.

Python 3.2, fajl postoji, nalazi se u istom direktoriju kao i .py modul, velicine je 16x16.

Ovo javlja slijedeci problem:

Traceback (most recent call last): File "/home/amar/workspace/iconTest/src/icontest.py", line 9, in <module> root.wm_iconbitmap('icon.ico') File "/usr/lib/python3.2/tkinter/__init__.py", line 1556, in wm_iconbitmap return self.tk.call('wm', 'iconbitmap', self._w, bitmap) _tkinter.TclError: bitmap "icon.ico" not defined
Malo googleao i nasao da Linux bas u ne voli .ico fajlove, te da prije naziva fajla treba dodati @.
Ok, u Gimpu konvertovao .ico i .xmb (prema preporuci) i izmjenio code:

[code]from tkinter import * #@UnusedWildImport

root = Tk()
root.wm_iconbitmap(’@icon.xmb’)
root.mainloop()[/code]
Drugaciji code javlja drugaciji problem:

Traceback (most recent call last): File "/home/amar/workspace/iconTest/src/icontest.py", line 9, in <module> root.wm_iconbitmap('@icon.xmb') File "/usr/lib/python3.2/tkinter/__init__.py", line 1556, in wm_iconbitmap return self.tk.call('wm', 'iconbitmap', self._w, bitmap) _tkinter.TclError: error reading bitmap file "icon.xmb"
Probao i sa full pathom, i sa .xmp formatom, ista stvar. Ako ne stavim @ prije imena fajla, javlja prvi problem, ako stavim, javlja drugi problem.

Any ideas?

btw, ovo je metoda u tkinteru na koju pokazuje traceback:

[code]
def wm_iconbitmap(self, bitmap=None, default=None):
"""Set bitmap for the iconified widget to BITMAP. Return
the bitmap if None is given.

    Under Windows, the DEFAULT parameter can be used to set the icon
    for the widget and any descendents that don't have an icon set
    explicitly.  DEFAULT can be the relative path to a .ico file
    (example: root.iconbitmap(default='myicon.ico') ).  See Tk
    documentation for more information."""
    if default:
        return self.tk.call('wm', 'iconbitmap', self._w, '-default', default)
    else:
        return self.tk.call('wm', 'iconbitmap', self._w, bitmap)
iconbitmap = wm_iconbitmap[/code]

Linije 1556 je:
return self.tk.call(‘wm’, ‘iconbitmap’, self._w, bitmap)

A buuuuuuuu…

Niko ne zna rjesenje za moj problem.

Adise, ima li te gdje? :slight_smile:

Sorry ja sad tek vidjoh…


from Tkinter import *

root = Tk()
ikona = '@icon.xbm
root.wm_iconbitmap(ikona)
root.wm_title(“Blah”)
root.mainloop()

icon.xbm:

#define icon_width 16
#define icon_height 16
static unsigned char icon_bits[] = {
0x00, 0x01, 0x04, 0x03, 0x0c, 0x60, 0x00, 0x70, 0xf0, 0x13, 0xb8, 0x0f,
0x0c, 0x0c, 0xcc, 0x98, 0x86, 0xd8, 0xc6, 0x18, 0xcc, 0x18, 0xcc, 0x0c,
0x18, 0x76, 0x18, 0x02, 0x30, 0x03, 0x30, 0x01 };

Probaj da li ti radi ovaj code.
Ima nekih carolija jer ovaj code mi u jednom momentu nije htio da radi :frowning: pogledacu kad dodjem kuci u cemu je fol.

@trip0d,

hvala velika, proradilo!!

Ali samo sa .xbm formatom. .xpm i .ico nece da cita.

Problem .xbm-a je sto su samo dvije boje.

Ako naletis na neko rjesenje za .xpm, bilo bi super.

Hvala jos jednom.