PHP-GTK 6. - Rozmístění a tlačítka - Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:



PHP

PHP-GTK 6. - Rozmístění a tlačítka

30. července 2001, 00.00 | V dnešním díle seriálu o propojení GTK+ a PHP se podíváme na velice důležitou vlastnost - umisťování prvků v okně. A dostane se i na tlačítka.

V dnešním díle seriálu o propojení GTK+ a PHP se podíváme na velice důležitou vlastnost - umisťování prvků v okně. A dostane se i na tlačítka.

Boxy

Jistě už jste přišli na to, že házet widgety do okna bez ladu a skladu není to pravé. K pohodlnému rozmístění widgetů přesně podle svých přání stačí použít kontejnery. Připomenu, že kontejnery jsou speciální widgety, do kterých lze umístit jiné widgety.

Nejpoužívanější kontejner v GTK+ je samozřejmě okno. Pokud pomineme tento všeobecně používaný objekt, další na řadě jsou boxy. Množné číslo jsem použil z důvodu, že boxů existují dva druhy - vertikální a horizontální (neboli svislé a vodorovné). Někteří z vás se již možná dovtípili, že toto rozdělení má cosi společného s konečným výsledkem. Ano, je to přesně tak - widgety vložené do vertikálního boxu se zobrazují nad sebou, kdežto widgety v horizontálním boxu se zobrazují pěkně vedle sebe.

Box vytvoříte pomocí $vbox = &new GtkVBox(); (pro svislý box) či $hbox = &new GtkHBox(); (pro box vodorovný). Ať už si vyberete jakýkoli box, můžete použít dva parametry. První parametr je typu boolean (tedy TRUE nebo FALSE) a určuje, zda mají všechny widgety obsažené v boxu dostat stejný prostor (TRUE znamená, že dostanou stejný prostor). Druhým parametrem je číslo, které určí vzdálenost v pixelech mezi jednotlivými widgety.

Widgety do boxu přidáte pomocí funkce $box->add($widget); a zobrazují s v pořadí, v jakém je přidáte. Ve svislém boxu se widgety zobrazují zhora dolů, u vodorovného zleva doprava. Nic vám nebrání do boxu vložit jiný box.

Teď si ukážeme malý příklad práce s boxy.

$hbox1 = &new GtkHBox(); //vytvoříme si 1. vodorovný box
$vbox = &new GtkVBox(); //vytvoříme si svislý box
$hbox2 = &new GtkHBox(); //a ještě jeden vodorovný box

//připravíme si text a tlačítko
$text = &new GtkLabel('text do svisleho boxu');
$tlacitko = &new GtkButton('tlacitko');
//text i tlačítko vložíme do svislého boxu, nahoru text a pod něj tlačítko
$vbox->add($text);
$vbox->add($tlacitko);

//a ještě jeden text a tlačítko
$text = &new GtkLabel('text do vodorovneho boxu');
$tlacitko = &new GtkButton('tlacitko 2');
//vložíme je do vodorovného boxu, tlačítko vlevo a text vpravo
$hbox2->add($tlacitko);
$hbox2->add($text);

//již zaplněný svislý a vodorovný box vložíme do jiného vodorovného boxu
//svislý box vlevu a vodorovný vpravo
$hbox1->add($vbox);
$hbox1->add($hbox2);

//nesmíme zapomenout vložit "hlavní" box do okna
$okno->add($hbox1);

Výsledkem tohoto kódu bude takovéto okno. Pro snadnější orientaci jsem obtáhl jednotlivé boxy. "Hlavní, nejvyšší" $hbox1 je označen zeleně. Do něj vložený $vbox označuje barva modrá a $hbox2 je zvýrazněn červeně.

Okno s boxy

Tlačítka

Uživatel musí mít pocit, že dokáže chování programu jakýmsi způsobem ovlivnit. Tento pocit může získat kupříkladu klikáním na tlačítka.

Vytvoření tlačítka jste již mohli zpozorovat v předchozím případě. Nové tlačítko si vyrobíte funkcí $tlacitko = &new GtkButton('popis');, přičemž jako popis můžete uvést nápis na tlačítko.

Zajímavými funkcemi tlačítko příliš neoplývá. Uvedu snad jen $tlacitko->set_relief();, čímž můžete určit, jak moc bude tlačítko vystouplé. Do závorky uveďte GTK_RELIEF_NORMAL (standardní vzhled), GTK_RELIEF_HALF (tlačítko je vystouplé jen z části) nebo GTK_RELIEF_NONE (tlačítko splývá s okolím).

Ovšem na druhou stranu tlačítko oplývá velkým výběrem událostí. Funkce můžete napojit na tyto událost: pressed (když stisknete a držíte tlačítko), released (po uvolnění předchozího držení), clicked (kliknutí na tlačítko), enter (obdoba OnMouseOver z Javascriptu; myš se pohybuje nad tlačítkem) a leave (podobné OnMouseOut; myš odjede z tlačítka).

Pro jistotu připomenu, jak napojit funkci k události.
$tlacitko->connect('clicked','spoustena_funkce'); Takto spustíte funkci spoustena_funkce() po kliknutí na tlačítko.

Na závěr

Program použitý k demonstraci boxů si můžete stáhnout zde.

Příště již opustíme mělké vody předvádění jednotlivých widgetů a vyplujeme na širé moře celých aplikací. Jako první předvedu pěknou aplikaci pro přístup k MySQL. Pokud byste chtěli vidět nějakou speciální aplikaci (ale tak ať se vleze do jednoho článku), nebojte se napsat buď k diskuzi pod článek anebo do auditoria na Mageu

V přestávce do dalšího článku můžete studovat základy manuálu PHP-GTK.

Obsah seriálu (více o seriálu):

Tématické zařazení:

 » Rubriky  » PHP  

 » Rubriky  » Web  

 

 

 

Nejčtenější články
Nejlépe hodnocené články

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: