Farbige Icons in der Menüleiste

Fragen zu Tkinter.
Antworten
MikeR
User
Beiträge: 8
Registriert: Montag 8. Oktober 2012, 07:33

Hallo,

ist es möglich unter Linux farbige Icons in die Menüleiste zu bringen?
Bisher konnte ich nur .xbm Icons einbinden.

Wenn ja, wie mache ich das?

LG Mike
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

Hi MikeR

Sollte mit Option 'compound' möglich sein:

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: UTF-8 -*-

from functools import partial
import Tkinter as tk

def menu_callback(text):
    print text

def main():    
    app_win = tk.Tk()
    ICON_PYTHON_01_16 = tk.PhotoImage(data=\
    '''
    R0lGODlhEAAQAIQcAEdlfkVpiENymD54p0WCtH6a
    sKurq7Ozs6fA1by8vMTExP/IN87Ozv/RP//XSP/i
    Vt7e3v/ieN/i5P/sYuXl5f/nm+zs7P/wsO/x8vb2
    9v/54/7+/v///////////////yH+FUNyZWF0ZWQg
    d2l0aCBUaGUgR0lNUAAh+QQBCgAfACwAAAAAEAAQ
    AAAFmGAiJkqpMOinqglDZVscMxuzfgkEQ5QlyRvL
    6kTZ9GIIwkCA2KgUkBgsRpAIAgHnB1WMAhEBQGyr
    22SSyytA/LgQqYNlGFDQOBzQDCxewMg0EQ0LLRR+
    BAIYFRMTDw6Cgzp+CAIbi42PFQcMEhYWMowXQB8H
    EBgUPUWMDhoLWgcKBwcGmhkXDw0NFa4HN7JFUiu8
    NyqxmjchADs=
    '''
    )

    menubar = tk.Menu(app_win,
        bd = 1,
        activeborderwidth = 1,
        activebackground  = 'yellow',
        cursor = 'hand1',
        )
        
    filemenu = tk.Menu(menubar,
        bd      = 1,
        tearoff = 0,
        activeborderwidth = 0,
        activebackground  = 'green',
        )

    filemenu.add_command(
        label   = "Öffnen",
        compound = 'left',
        image = ICON_PYTHON_01_16,    
        command = partial(menu_callback, "Es wurde Öffnen gewählt!"),
        accelerator = 'Ctrl-A'
        )

    filemenu.add_command(
        label   = "Speichern",
        compound = 'left',
        image = ICON_PYTHON_01_16,
        command = partial(menu_callback, "Es wurde Speichern gewählt!"),
        accelerator = '      Ctrl-B ',
        )
        
    filemenu.add_separator()

    filemenu.add_command(
        label   = "Exit",
        compound = 'left',
        image = ICON_PYTHON_01_16,
        command = app_win.quit,
        accelerator = 'Ctrl-Q'
        )

    menubar.add_cascade(
        label="File",
        compound = 'left',
        image = ICON_PYTHON_01_16, 
        menu=filemenu,
        )

    app_win.config(menu=menubar)

    app_win.mainloop()

if __name__ == '__main__':
    main()
Gruß wuf :wink:
Take it easy Mates!
MikeR
User
Beiträge: 8
Registriert: Montag 8. Oktober 2012, 07:33

Ja super, vielen Dank.

kannst du mir noch verraten wie ich die Icons in die Datenzeilen konvertieren kann?

LG Mike
BlackJack

@MikeR: Das ist der Inhalt einer GIF-Datei als Base64 kodiert.
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

Hi MikeR

Wie BlackJack erwähnte muss das Icon eine Bilddatei mit der Endung '.gif' sein. Wenn du die Bilddatei in deinem Arbeitsverzeichnis abgelegt hast kannst du sie wie folgt einlesen:

Code: Alles auswählen

DEIN_ICON = tk.PhotoImage(file='DeinBildchen.gif')
Gruß wuf :wink:
Take it easy Mates!
MikeR
User
Beiträge: 8
Registriert: Montag 8. Oktober 2012, 07:33

Achso. Ich dachte das ginge nur auf dem Weg das Bild codiert in den Quelltext zu schreiben.
Jedenfalls bin ich euch wirklich dankbar, denn auf der Suche danach hab ich schon einige Stunden
investiert.

LG Mike
Antworten