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

Vzhled udělátek


Všechna standardní tkinterovská udělátka poskytují základní sadu stylovacích parametrů, které vám umožňují měnit věci jako barvy, fonty a další parametry vzhledu každého udělátka.

Barvy

Většina udělátek umožňuje měnit barvy použitím background a foreground. K určení barvy můžete použít jednak jméno barvy nebo přímo komponenty RGB.

Jména barev

Tkinter obsahuje databázi, která mapuje běžná jména barev na RGB hodnoty. Jsou v ní jak zcela běžná jména jako Red, Green, Blue, Yellow a LightBlue, ale také exotičtější jako Moccasin, PeachPuff, atd..

Na Linuxu pod X window system, jsou jména definována serverem X. Běžně jsou uložena v souboru xrgb.txt společně s jejich RGB hodnotami. Na Windows a Macintosh je tabulka barev zabudována přímo do Tk.

Pod Windows můžete také používat systémové barvy, které se dají změnit v Ovládacích panelech:

SystemActiveBorder, SystemActiveCaption, SystemAppWorkspace, SystemBackground, SystemButtonFace, SystemButtonHighlight, SystemButtonShadow, SystemButtonText, SystemCaptionText, SystemDisabledText, SystemHighlight, SystemHighlightText, SystemInactiveBorder, SystemInactiveCaption, SystemInactiveCaptionText, SystemMenu, SystemMenuText, SystemScrollbar, SystemWindow, SystemWindowFrame, SystemWindowText.

Na Macintoshi jsou dostupné následující barvy:

SystemButtonFace, SystemButtonFrame, SystemButtonText, SystemHighlight, SystemHighlightText, SystemMenu, SystemMenuActive, SystemMenuActiveText, SystemMenuDisabled, SystemMenuText, SystemWindowBody.

U jmen barev nezáleží na velikosti písmen. Mnoho, ne však všechny, jsou dostupné i s mezerou mezi slovy - např. "lightblue", "light blue" i "Light Blue" je stále stejná barva.

Specifikace RGB

Pro přesné určení barvy, můžete použít řetězec v formátu:

#RRGGBB

RR, GG, BB jsou hexadecimální hodnoty červené, zelené a modré. Jak převést desítkové barvy na hexa ve tvaru Tk, ukazuje následující příklad:

tk_rgb = "#%02x%02x%02x" % (128, 192, 200)

Tk podporuje také formát "#RGB" a "#RRRRGGGGBBBB" při určování barev se 16 nebo 65536 barvami.

Můžete používat metodu winfo_rgb pro převod jména barvy na trojici:

rgb = widget.winfo_rgb("red")
red, green, blue = rgb[0]/256, rgb[1]/256, rgb[2]/256

Poznámka: winfo_rgb vrací 16-bitovou RGB hodnotu, 0-65536. Pro převod na běžnější rozsah 0-255, musíte každou hodnotu dělit 256 (nebo posunou 8 bitů vpravo).

Fonty

Udělátka Tkinter umožňují používat různé fonty. Všechna mají nějaká defaultní nastavení. Zřídka musíte měnit font např. u štítků nebo tlačítek.

Fonty se většinou nastavují pomocí parametru font. Tkinter podporuje různé formáty:

U Tk < 8.0, jsou dostupné pouze popisovače X font. Více níže.

Popisovače fontu

Od 8.0 Tkinter podporuje popisovače fontů nezávislé na systému. Můžete specifikovat font jako n-tici, obsahující jméno fontu, velikost a volitelně navíc řetězec s jedním nebo více styly. Příklady:

("Times", 10, "bold")
("Helvetica", 10, "bold italic")
("Symbol", 8)

Chcete-li dostat standardní velikost a styl, použijte jen jméno fontu. Neobsahuje-li jméno fontu mezeru, můžete použít i následující formát:

"Times 10 bold"
"Helvetica 10 bold italic"
"Symbol 8"

Zde je pár rodin fontů na většině platforem Windows:

Arial (odpovídá písmu Helvetica), Courier New (Courier), Comic Sans MS, Fixedsys, MS Sans Serif, MS Serif, Symbol, System, Times New Roman (Times), and Verdana:

Poznámka: pokud jméno obsahuje mezery, musíte použít syntaxi s n-ticí.

Dostupné styly jsou normal, bold, roman, italic, underline a overstrike.

Tk 8.0 automaticky mapuje Courier, Helvetica a Times na jejich odpovídající jména na každé platformě. Specicikace fontu nikdy nevyvolá chybu, pokud se daný font nenalezne, použije nejbližší příbuzný.

Jména fontů

Tk 8.0 umožňuje vytvářet vlastní jména fontů.

Modul tkFont poskytuje třídu Font, která umožňuje vytvářet instance fontů. Toto můžete využívat kdekoliv v celém Tk.

tkFont.Font(family="Times", size=10, weight=tkFont.BOLD)
tkFont.Font(family="Helvetica", size=10, weight=tkFont.BOLD,
slant=tkFont.ITALIC)
tkFont.Font(family="Symbol", size=8)

Změníte-li pojmenovaný font (za použití metody config), změny jsou automaticky promítnuty do všech udělátek, které daný font používají.

Font podporuje následující parametry stylů. Poznámka: konstanty jsou definovány v modulutkFont:

family

Font rodiny.

size

Velikost fontu v bodech. Záporná hodnota značí hodnoty v pixelech.

weight

Tloušťka. NORMAL nebo BOLD. Standard je NORMAL.

slant

Sklon písma. NORMAL nebo ITALIC. Standard je NORMAL.

underline

Podtrhávání. True značí podtržení. Standard je 0 (false).

overstrike

Přeškrtnutí. True značí přeškrtnutí. Standard je 0 (false).

Systémové fonty

Tk podporuje také specifická jména fontů.

Pod X to mohou být například fixed, 6x10, atd.

Pod Windows to jsou ansi, ansifixed, device, oemfixed, system a systemfixed:

Pod Macintosh application a system.

Poznámka: Systémové fonty jsou plnohodnotná jména, ne jako jména rodin fontů, a tudíž se nemohou kombinovat s velikostí či stylem. Kvůli portabilitě se snažte těchto fontů vyvarovat.

Popisovače X Font

X Font Descriptors are strings having the following format (the asterisks represent fields that are usually not relevant. For details, see the Tk documentation, or an X manual):

-*-family-weight-slant-*--*-size-*-*-*-*-charset

The font family is typically something like Times, Helvetica, Courier or Symbol.

The weight is either Bold or Normal. Slant is either R for "roman" (normal), I for italic, or O for oblique (in practice, this is just another word for italic).

Size is the height of the font in decipoints (that is, points multiplied by 10). There are usually 72 points per inch, but some low-resolution displays may use larger "logical" points to make sure that small fonts are still legible. The character set, finally, is usually ISO8859-1 (ISO Latin 1), but may have other values for some fonts.

The following descriptor requests a 12-point boldface Times font, using the ISO Latin 1 character set:

-*-Times-Bold-R-*--*-120-*-*-*-*-ISO8859-1

If you don't care about the character set, or use a font like Symbol which has a special character set, you can use a single asterisk as the last component:

-*-Symbol-*-*-*--*-80-*

A typical X server supports at least Times, Helvetica, Courier, and a few more fonts, in sizes like 8, 10, 12, 14, 18, and 24 points, and in normal, bold, and italic (Times) or oblique (Helvetica, Courier) variants. Most servers also support freely scaleable fonts. You can use programs like xlsfonts and xfontsel to check which fonts you have access to on a given server.

This kind of font descriptors can also be used on Windows and Macintosh. Note that if you use Tk 4.2, you should keep in mind that the font family must be one supported by Windows (see above).

Formátování textu

Tkinter podporuje také víceřádkový text. Vložte konec řádku (\n) všude tam, kde potřebujete.

Můžete využít také parametr wraplength pro nastavení maximální šířky a umožnit udělátku, aby text zalamoval sám. Tkinter se snaží zalamovat podle mezer, ale při úzkém udělátku může dojít i k zalomení uprostřed slova.

Standardně jsou řádky centrovány na střed. Změnit to můžete pomocí parametru justify: LEFT nebo RIGHT. Standard je CENTER.

Okraje

Všechna Tk udělátka mají okraje (ačkoliv defaultně nejsou někde vidět). Okraj se skládá z volitelného 3d reliéfu a zvýrazňovací oblasti.

Reliéf

Relief určuje, jak vykreslit okraj:

borderwidth (nebo bd)

Šířka okraje v pixelech. Většinou je standard jeden nebo 2 pixely. Málokdy je důvod toto měnit.

relief

Jak vykreslit 3D okraj. Může být SUNKEN, RAISED, GROOVE, RIDGE a FLAT.

Zvýraznění při získání focusu

Nastavení zvýrazňování určuje, jak se změní vzhled udělátka, když získá focus. Ve většině případů je zvýrazněná oblast mimo vlastní relief. Parametry:

highlightcolor

Jaká bude barva. Většinou černá nebo jiná výrazná barva.

highlightbackground

JAká bude barva, když udělátka nebude mít focus. Většinou stejné jako pozadí udělátka.

highlightthickness

Šířka zvýrazněné oblasti. Obvykle jeden nebo dva pixely.

Kurzory

cursor

Tato volba řídí, jak bude vypadat myší kurzor, když myš bude nad udělátkem. Pokud není nastavena, použije se stejné nastavení, jako u rodiče. Poznámka: některá udělátka nastavují kurzory podle sebe defaultně - např. Text a Entry.

Jména kurzorů


Přeložil a upravil - Pavel Kosina - Copyright © 2007 TkinterCZ - GNU Free Documentation License 1.2