Hi,

I am struggling to get an application icon to show up on Linux.
(Although it works perfectly on Windows.)

I know this issue has come up before and I've followed the advice: I
made the icon 16x16, XBM format, and prefixed the full path with '@'.

I am using Python 3.2.2 and Tcl/Tk 8.5.

Here is a complete example:

    #!/usr/bin/env python3
    import os
    from tkinter import *
    from tkinter.ttk import *

    class Window(Frame):
        def __init__(self, parent):
            super().__init__(parent)
            quitButton = Button(self, text="Quit",
                command=self.master.destroy)
            quitButton.pack()
            self.pack()
            self.set_icon(os.path.join(os.getcwd(), "hello"))
            # hello.xbm, hello.ico; both 16x16

        def set_icon(self, iconName):
            windowSystem = self.master.tk.call("tk", "windowingsystem")
            if windowSystem == "win32": # Windows
                iconName += ".ico"
            elif windowSystem == "x11": # Unix
                iconName = "@" + iconName + ".xbm"
            if windowSystem != "aqua" and os.path.isfile(iconName):
                print(iconName)
                self.master.iconbitmap(iconName)
                #self.master.wm_iconbitmap(iconName) also works

    app = Tk()
    app.title("Hello")
    Window(app)
    app.mainloop()

This works perfectly on Windows 7. But on Linux (Debian & Ubuntu), I
just get a default icon. The print() statement produces:
@/home/mark/hello.xbm

This hello.xbm file's contents are:

#define hello_width 16
#define hello_height 16
static unsigned char hello_bits[] = {
   0x00, 0x00, 0x0e, 0x70, 0x0e, 0x70, 0x0e, 0x70, 0x0e, 0x70, 0x0e, 0x70,
   0xfe, 0x7f, 0xfe, 0x7f, 0xfe, 0x7f, 0x0e, 0x70, 0x0e, 0x70, 0x0e, 0x70,
   0x0e, 0x70, 0x0e, 0x70, 0x0e, 0x70, 0x00, 0x00 };

Thanks!

-- 
Mark Summerfield, Qtrac Ltd, www.qtrac.eu
    C++, Python, Qt, PyQt - training and consultancy
        "Programming in Python 3" - ISBN 0321680561
            http://www.qtrac.eu/py3book.html
_______________________________________________
Tkinter-discuss mailing list
Tkinter-discuss@python.org
http://mail.python.org/mailman/listinfo/tkinter-discuss

Reply via email to