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)