LINUXSOFT.cz Přeskoč levou lištu
Uživatel: Heslo:  
   CZUKPL

> Perl (122) - Gtk2 - úvod

Perl Další GUI knihovnou, kterou lze používat v Perlu je Gtk2. Tento toolkit toho již dokáže opravdu mnoho a lze s ním psát plnohodnotné aplikace. Podívejme se, jak na to.

15.12.2010 00:00 | Jiří Václavík | Články autora | přečteno 8169×

Sada knihoven GTK+ vznikla původně jako náhrada Motifu pro potřebu grafického editoru GIMP verze 1.0. Je výsledkem skupiny studentů XCF z univerzity v Berkeley z roku 1997. Z názvu Gimp také pochází zkratka GTK. Znamená totiž Gimp Tool Kit. Dnes patří GTK vedle Qt ke dvěma nejpoužívanějším toolkitům pro X11.

GTK+ je napsáno v jazyce C, avšak existují vazby na početnou skupinu známých jazyků. Pro zajímavost můžeme nahlédnout na oficiální stránku, kde je seznam podporovaných jazyků.

Gtk2 a Perl

Projekt podpory Gtk2 v Perlu má oficiální stranku na gtk2-perl.sourceforge.net. Najdeme zde dokumentaci (ta se mi ovšem nezdá příliš vhodná pro ty, kteří s Gtk2 začínají) a případně další informace.

Gtk2 by ve většině distribucí již mělo být připraveno k použití. Je třeba mít nainstalovaný modul Gtk2, což lze uskutečnit tradičním příkazem cpan.

# cpan Gtk2

Dokumentace

Kdo již Gtk2 zná (používal ji s jazykem C) a chce ho pouze používat v Perlu, může se podívat na změny mezi rozhraními. Používat původní dokumentaci zde totiž není příliš těžké. Stačí si zvyknout na několik pravidel. Velmi pěkně je udělaná také dokumentace PyGtk2, která má k perl-gtk2 ještě o něco blíže. Jak již bylo zmíněno, Existuje též oficiální POD dokumentace, avšak ta je užitečná pouze pro dohledávání syntaxe a vyžaduje již větší zkušenost Gtk2, neboť neobsahuje téměř žádné komentáře.

Gtk2 a čeština

Gtk2 bezproblémově podporuje kódování utf-8. Proto není problém vytvářet aplikace s českou diakritikou (nebo prakticky libovolnými národními znaky). Potřebujeme k tomu dvě věci.

  • uložit zdrojový kód v kódování utf-8 (to u nejpoužívanějších textových editorů obvykle nabízí přímo dialog pro uložení)
  • načíst modul utf8
    use utf8;

TRUE a FALSE hodnoty

Je vhodné využívat předdefinované pravdivostní konstanty TRUE a FALSE, které exportujeme do programu následovně.

use Glib qw(TRUE FALSE);

První program

Již tradičně začínáme u grafických knihovem programem, který zobrazí prázdné okno. Držme se této konvence dále a napišme nejjednodušší možnou grafickou aplikaci.

Již víme, že budeme v každém Gtk2 programu používat modul Gtk2.

use Gtk2;

Ve všech Gtk2 aplikacích se používá ještě jeden příkaz - init. Ten se se pokusí najít nějaký displej, kde se aplikace zobrazí (Mimo X Server nebo jiné grafické prostředí init selže; pomocí init_check můžeme zkontrolovat, zda je aktuálně takové prostředí dostupné - pokud není, může program pokračovat jinak a použít například textové rozhraní).

Gtk2->init;

Avšak místo něj lze volat use se speciálním parametrem, jak budeme často činit v budoucnu. Tím zredukujeme většinu aplikací o jeden řádek.

use Gtk2 "-init";

Program budeme ukončovat vždy vstupem do smyčky událostí. Pokaždé, když se program dostane k této smyčce, se zastaví a čeká na události, které vzápětí obsluhuje. Jakmile je obslouží, čeká na další události. To se opakuje až do ukončení programu.

Gtk2->main;

Zbývá vyřešit zobrazení okna. Okno je widget. Vytvoříme ho jako instanci Gtk2::Window. Konstruktoru předáme parametr typu Gtk2::WindowType, který může nabývat hodnot 'toplevel' nebo 'popup'. Každý widget nakonec zobrazíme pomocí metody show.

$okno = Gtk2::Window->new("toplevel");
$okno->show;

Dejme tedy dohromady všechny tyto poznatky. Náš úvodní Gtk2 program bude vypadat takto.

use Gtk2;

Gtk2->init;

$okno = Gtk2::Window->new("toplevel");
$okno->show;

Gtk2->main;

A výsledek? Po spuštění uvidíme dle očekávání prázdné okno.

První program v Gtk2 - prázdné okno

Možnosti oken

Metodou set_position nastavujeme pozici okna na displeji. Následující dva příklady budeme dále občas potřebovat.

$okno->set_position("center");
$okno->set_position("center-always");

Přidejme text

Text se vytváří ve widgetu Gtk2::Label. Užitečné je, že text lze formátovat markup jazykem. Je to podstatně přímočařejší, než používat nějaké speciální metody. Pro úpravy textu jako je velikost písma, rodina písma, styl, barvy atd. lze používat značky podobné jako v HTML.

Důležité je, že každý widget musíme přiřadit do nějakého okna metodou add (později uvidíme, že lze přiřazovat i do jiných widgetů) a nechat ho zobrazit metodou show.

use Gtk2 "-init";

$okno = Gtk2::Window->new("toplevel");
$okno->set_border_width(20);

$label = Gtk2::Label->new();
$label->set_angle(44);
$label->set_markup("<b><i>pokus</i></b> <span background='green' foreground='Yellow'
size='large'><b>pokus</b></span> <s><span size='100000'>pokus</span></s>");

$okno->add($label);
$label->show;
$okno->show;

Gtk2->main;

Jak vidíme, styl, barvy, velikost stejně jako otočení a další parametry můžeme nastavovat velmi jednoduše.

Ukázka Gtk2::Label

Přidejme tlačítko

Tlačítko je reprezentováno widgetem Gtk2::Button. Standardně tedy vytvoříme tlačítko.

$tlacitko = Gtk2::Button->new("Odeslat");

Tlačítko bychom vždy měli přiřadit nějakému oknu, kde se má zobrazit. Funguje to stejně, jako jsme to dělali u zobrazení textu. Provedeme to tedy metodou add.

$okno->add($tlacitko);

Samozřejmě nesmíme zapomenout na zobrazení tlačítka.

$tlacitko->show;

Jak tedy vypadá náš upravený program? Podívejme se na aktuální verzi zdrojového kódu.

use Gtk2;

Gtk2->init;

$okno = Gtk2::Window->new("toplevel");

$tlacitko = Gtk2::Button->new("Odeslat");

$okno->add($tlacitko);

$tlacitko->show;
$okno->show;

Gtk2->main;

Podívejme se, co se nám zobrazí po spuštění programu.

Okno s tlačítkem

Tlačítko je zde přes celé okno, což není příliš hezké. Přidejme si do okna rámeček.

$okno->set_border_width(20);

Když tento řádek připíšeme do programu, získáme okolo tlačítka kýžený rámeček.

Okno s tlačítkem

Deaktivace tlačítka

Metoda set_sensitive je přepínač pro aktivaci a deaktivaci tlačítek (nastavením na false zešednou a nepůjde na ně kliknout).

Verze pro tisk

pridej.cz

 

DISKUZE

Nejsou žádné diskuzní příspěvky u dané položky.



Příspívat do diskuze mohou pouze registrovaní uživatelé.
> Vyhledávání software
> Vyhledávání článků

5.3.2017 19:12 /Redakce Linuxsoft.cz
PR: 23. března proběhne v Praze konferenci na téma Cloud computing v praxi. Hlavními tématy jsou: Nejžhavější trendy v oblasti cloudu a cloudových řešení, Moderní cloudové služby, Infrastruktura současných cloudů, Efektivní využití cloudu, Nástrahy cloudových řešení a jak se jim vyhnout.
Přidat komentář

27.2.2017 22:12 /František Kučera
Pozvánka na 137. sraz OpenAlt – Praha: Tentokrát jsme si pro vás připravili neobvyklou akci. Ve středu 1.3. v 17:30 nás přivítá sdružení CZ.NIC ve svých prostorách v Milešovské ulici číslo 5 na Praze 3, kde si pro nás připravili krátkou prezentaci jejich činnosti. Následně navštívíme jejich datacentrum pod Žižkovskou věží. Provedou nás prostory, které jsou běžnému smrtelníkovi nedostupné!
Po ukončení prohlídky se všchni odebereme do hostince U vodoucha, Jagelonská 21, Praha 3 pochutnat si na některém z vybraných piv či dát si něco na zub. Rezervaci máme od 19:30, heslo je OpenAlt.
Ale pozor! Do prostor datového centra máme omezený přístup, dostane se tam pouze 10 lidí! Takže kdo přijde dříve, ten má přednost, a občanky s sebou! Kdo nebude chtít na prohlídku datového centra, může se pomalu přesunout do hostince U vodoucha a u nepřeberné nabídky piv počkat na ostatní.
Přidat komentář

18.1.2017 0:49 /František Kučera
Členové a příznivci spolku OpenAlt se pravidelně schází v Praze a Brně. Fotky z pražských srazů za uplynulý rok si můžete prohlédnout na stránkách spolku. Příští sraz se koná už 19. ledna – tentokrát je tématem ergonomie ovládání počítače – tzn. klávesnice, myši a další zařízení. Také budete mít příležitost si prohlédnout pražský hackerspace Brmlab.
Přidat komentář

8.1.2017 17:51 /František Kučera
Máš rád svobodný software a hardware nebo se o nich chceš něco dozvědět? Přijď na sraz spolku OpenAlt, který se bude konat ve čtvrtek 19. ledna od 18:30 v pražském hackerspacu Brmlab. Tentokrát je tématem srazu ergonomie ovládání počítače – tzn. klávesnice, myši a další zařízení. K vidění bude mechanická klávesnice dasKeyboard, trackball Logitech nebo grafický tablet (a velký touchpad) Wacom. Přineste i vy ukázat svoje zajímavé klávesnice a další HW. V 18:20 je sraz před budovou, v 18:30 jdeme společně dovnitř, je tedy dobré přijít včas. Podle zájmu se později přesuneme do nějaké restaurace v okolí.
Přidat komentář

1.12.2016 22:13 /František Kučera
Máš rád svobodný software a hardware nebo se o nich chceš něco dozvědět? Přijď na sraz spolku OpenAlt, který se bude konat ve čtvrtek 8. prosince od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Sraz bude tentokrát tématický. Bude retro! K vidění budou přístroje jako Psion 5mx nebo Palm Z22. Ze svobodného hardwaru pak Openmoko nebo čtečka WikiReader. Přijďte se i vy pochlubit svými legendami, nebo alespoň na pivo. Moderní hardware má vstup samozřejmě také povolen.
Komentářů: 1

4.9.2016 20:13 /Pavel `Goldenfish' Kysilka
PR: Dne 22.9.2016 proběhne v Praze konference Cloud computing v praxi. Tématy bude např. nejnovější trendy v oblasti cloudu a cloudových řešení, provozování ERP v cloudu, o hostování různých typů softwaru, ale třeba i o zálohování dat nabízeném podnikům formou služby.
Přidat komentář

1.9.2016 11:27 /Honza Javorek
Česká konference o Pythonu, PyCon CZ, stále hledá přednášející skrz dobrovolné přihlášky. Máte-li zajímavé téma, neváhejte a zkuste jej přihlásit, uzávěrka je již 12. září. Konference letos přijímá i přednášky v češtině a nabízí pomoc s přípravou začínajícím speakerům. Řečníci mají navíc vstup zadarmo! Více na webu.
Přidat komentář

27.8.2016 8:55 /Delujek
Dnes po 4 letech komunitního vývoje vyšla diaspora 0.6.0.0
diaspora* je open-source, distribuovaná sociální síť s důrazem na soukromý
Více v oficiálním blog-postu
Přidat komentář

   Více ...   Přidat zprávičku

> Poslední diskuze

24.3.2017 11:54 / Hui
country cottages

16.3.2017 16:33 / BezvaDesign.cz
Re: Hledám grafika do teamu

9.3.2017 11:44 / Jaromir Obr
Re: chyba

18.1.2017 20:18 / martin horky
Spolupraca linuxu a microsoftu

17.1.2017 9:57 / Pavel Hrubeš
Re: Externí USB televizní karta

Více ...

ISSN 1801-3805 | Provozovatel: Pavel Kysilka, IČ: 72868490 (2003-2017) | mail at linuxsoft dot cz | Design: www.megadesign.cz | Textová verze