Úvod do Tkinter - Okna pro jazyk Python - Postaveno na základech 'An Introduction to Tkinter'

Tkinter - OptionMenu

Udělátko OptionMenu vytváří tlačítko, na které když kliknete, tak se vysune menu. Je to velmi podobné combo boxu od windowsů.

Chcete-li získat aktuální hodnotu vyskakovací nabídky, musíte spojit vyskakovací nabídku s tkinterovskou proměnnou. V sekci Pojetí najdete pár příkladů jak na to.

Pojetí

# -*- coding: utf-8 -*- 
from Tkinter import *

okno = Tk()

promenna = StringVar(okno)
promenna.set(u"jedna") # standardní hodnota

w = OptionMenu(okno, promenna, u"jedna", u"dva", u"tři")
w.pack()

mainloop()

K získání aktuální hodnoty vyskakovací nabídky použijte metodu get na proměnnou nebo předaný parametr hodnota:

# -*- coding: utf-8 -*- 
from Tkinter import *

def ok(hodnota):
    u"Volaná funkce při změně hodnoty udělátka 'option'"
    print u"hodnota je:", promenna.get(), hodnota

okno = Tk()

promenna = StringVar(okno)  # tkinterovská proměnná
promenna.set(u"jedna")      # počáteční hodnota

option = OptionMenu(okno, promenna, u"jedna", u"dva", u"tři", u"čtyři", command=ok)
option.pack()

mainloop()

Následujicí příklad popisuje jak vyrobit tlačítkové menu ze seznamu parametrů:

# -*- coding: utf-8 -*- 
from Tkinter import *

PARAMETRY = [
    u"jedna",
    u"dva",
    u"tři"
]

okno = Tk()

promenna = StringVar(okno)
promenna.set(PARAMETRY[0]) 

w = OptionMenu(okno, promenna, *PARAMETRY)
w.pack()

mainloop()

Další příklad ukazuje, jak upravit udělátko podle vašich představ.
# -*- coding: utf-8 -*- 
from Tkinter import *

def ok(hodnota):
    promenna.set(hodnota)  # tento řádek je zde kvůli dynamicky přidané položce "tři"
    print u"hodnota je:", promenna.get(), hodnota 


okno = Tk()

promenna = StringVar(okno)
promenna.set(u"jedna")

w = OptionMenu(okno, promenna,u"jedna", u"dva", u"...",command=ok)
w.pack()
w.config(font='Times 12',bg='red',fg='blue',relief='groove',pady=5,padx=5,bd=2,
activebackground='blue',activeforeground='red',width=15)

# dynamicky přidaná položka "tři"
w["menu"].insert(2, "command", label=u"tři", command=lambda : ok(u"tři"))

mainloop()


Referenční příručka

(tato není zatím kompletní)

OptionMenu (master=None, **options) (class) [#]

Vysunovací nabídka

master
Rodičovské okno.
**options
Parametry udělátka. Podívej se na metodu config pro všechny možné parametry.
config(**options) [#]

Modifikuje jeden nebo více parametrů udělátka. Jestliže nejsou parametry dány, tato metoda vrací obsah všech již daných hodnot parametrů.

**options
Parametry udělátka
activebackground=
Jakou barvu pozadí použít, když je nad vysunovací nabídkou kurzor. Standardní nastavení závisí na systému.
activeforeground=
Jakou barvu písma použít, když je nad vysunovací nabídkou. Standardní nastavení závisí na systému. (activeForeground/Background)
anchor=
Kontroluje, kde ve vysunovací nabídce se bude text(nebo obrázek) nacházet. Vybírejte z: N, NE, E, SE, S, SW, W, NW, nebo CENTER. Standardně je nastaven CENTER. (anchor/Anchor)
background=
Barva pozadí vysunovací nabídky. Standardně nastavení závisí na systému. (background/Background)
bg=
Stejné jako background.
borderwidth=
Šířka okraje vysunovací nabídky. Standardní nastavení závisí na systému, ale obvykle je to 1 nebo 2 pixely. (borderWidth/BorderWidth)
bd=
Stejné jako borderwidth.
command=
Funkce nebo metoda, která je zavolána, když je nabídka zmáčknuta. Jestliže nedáte tento parametr, nestane se nic, když uživatel zmáčkne vysunovací nabídku. (command/Command)
compound=
Kontroluje jak kombinovat text a obrázek ve vysunovací nabídce. Standardně, je li dán obrázek , je text ignorován. Jestliže je tento parametr nastaven na CENTER, text se objeví nad obrázkem. Jestliže je tento parametr nastaven na BOTTOM, LEFT, RIGHT nebo TOP, obrázek je koncipován mimo text (používej BOTTOM  k posunutí obrázku pod text atd.). Standardní nastavení je NONE. (compound/Compound)
cursor=
Změna kursoru, jestliže se nachází nad vysunovací nabídkou. (cursor/Cursor)
disabledforeground=
Barva písma, když je vysunovací nabídka zablokovaná (DISABLED) . Standardní nastavení závisí na systému. (disabledForeground/DisabledForeground)
font=
Druh písma použitého na text ve vysunovací nabídce.Vysunovací nabídka může obsahovat pouze jeden druh písma. Standardní nastavení závisí na systému (font/Font)
foreground=
Barva pro barvu písma. Standardní nastavení závisí na systému. (foreground/Foreground)
fg=
Stejné jako  foreground.
height=
Výška vysunovací nabídky. Když vysunovací nabídka obsahuje text, výška je dána v textových jednotkách. Když nabídka obsahuje obrázek, výška je dána v pixelech.  (height/Height)
highlightbackground=
Jaká barva se použije na zvýraznění okraje, když vysunovací nabídka nebude mít focus. Standardní nastavení záleží na systému. (highlightBackground/HighlightBackground)
highlightcolor=
Jaká barva se použije na zvýraznění okraje, když vysunovací nabídka bude mít focus. Standardní nastavení záleží na systému. (highlightColor/HighlightColor)
highlightthickness=
Šířka zvýrazněného okraje. Standardní nastavení záleží na systému (obvykle jeden nebo dva pixely). (highlightThickness/HighlightThickness)
image=
Obrázek do vysunovací nabídky. Když je tento parametr dán, je obrázek vykreslen nad text , jestliže není dán parametr compound. (image/Image)
padx=
Horizontální vycpávka mezi jeho obsahem a okrajem. (padX/Pad)
pady=
Vertikální vycpávka mezi obsahem nabídky  a jeho okrajem. (padY/Pad)
relief=
Okrasa okraje.  Možnosti jsou RAISED, SUNKEN, FLAT, GROOVE, RIDGE. (relief/Relief)
state=
Stav nabídky: NORMAL, ACTIVE nebo DISABLED. Standardně je nastaven NORMAL. (state/State)
underline=
Který ze znaků z textu podtrhnout. Standardně je nastaveno na -1, což znamená, že žádný znak nebude podtržen. (underline/Underline)
width=
Šířka nabídky. Když vysunovací nabídka obsahuje text, je šířka dána v textových jednotkách. Když vysunovací nabídka obsahuje obrázek, šířka je dána v pixelech. (width/Width)
Různé
w["menu"].insert(index, "command", label=text)
Dynamické přidávání položek do nabídky. Do udělátka w přidá na pozici index zadaný text.