PHP (94) - GUI
PHP se dá kromě tvorby webu a shellových skriptů použít i k vytváření samstatných aplikací - včetně grafického rozhraní. Klíčem k tomu je PHPGTK.
21.1.2005 15:00 |
Petr Zajíc
| Články autora
| přečteno 41372×
Ačkoli to mnoho lidí vůbec neví, dá se PHP kromě tvorby webových
stránek (a kromě použití jako shellový interpreter) použít rovněž jako
obecný jazyk pro tvorbu samostatných aplikací, a to dokonce aplikací s
grafickým rozhraním. V tomto a následujícím díle si trochu ukážeme, jak
na to.
Princip
Samotné PHP nemá žádné prostředky pro tvorbu GUI (graphic user
interface, grafické uživatelské rozhraní). Tím mám na mysli prostředky
pro tvorbu oken s tlačítky, rozevíracími seznamy, zaškrtávači,
přepínači a tak dále. Existují nicméně samostatně napsané programy,
jejichž úkolem je - zjednodušeně řečeno - vytvářet prvky grafického
uživatelského rozhraní. Takže, kdyby se PHP na některý takový program
(často se nazývá toolkit) vhodně napojilo, mohla by vzniknout zajímavá
kombinace, že? Zejména, kdyby takový toolkit byl dostupný pod nějakou
symatickou licencí a kdyby fungoval pod více operačními systémy.
Tvůrci dnes již velmi populárního programu pro manipulaci s obrázky
GIMP (na Linuxsoftu máme mimochodem o GIMPu seriál) přesně takový toolkit
kdysi potřebovali. Takže vznikl GTK+,
neboli "The Gimp Toolkit" - nezávislý balíček pro tvorbu grafického
uživatelského rozhraní. Šířen je pod licencí GNU LGPL, čili patří mezi
svobodný software. Software je to velmi používaný, GTK+ je například
základem prostředí GNOME.
A teď to nejlepší - GTK+ funguje pod Windows i pod Linuxem a
existuje projekt spojující PHP a GTK+! Takže pomocí PHP můžeme vytvářet
aplikace s grafickým rozhraním, aniž bychom se museli zabývat
"nízkoúrovňovým" programováním samotného rozhraní. Projekt, který PHP a
GTK integruje se nazývá PHPGTK a má pochopitlně svoje internetové stránky. Pojďme se krátce podívat na
to, jak takovou věc vůbec zprovoznit:
Instalace PHPGTK
Windows
PHPGTK je potřeba stáhnout
a rozbalit. Soubor README.txt popisuje, kam se jednotlivé složky mají
překopírovat (to uděláte ručně). Část archivu se musí dostat do složky,
kde máte nainstalované PHP a část do systémové složky WINDOWS. Je to
poměrně dobře dokumentované. Instalací si můžete přepsat soubor php.ini
(což osobně nepovažuji za příliš dobrý nápad), nebo si můžete sekci,
týkající se PHP do vlastního php.ini překopírovat (mnohem lepší).
Distribuce obsahuje rovněž příklady, které si můžete spustit a
vyzkoušet. GTK+ aplikace se spouštějí pomocí souboru php_win.exe, takže
můžete naspat něco ve smyslu:
c:\php\php_win
D:\pokus\gtk\gtk.php
a měl by se vám objevit požadovaný příklad.
LINUX
Ověřte si, zda máte k dispozici GTK. Způsob, jakým to provedete bude
záležet na možnostech konkrétní distribuce, pro Fedoru Core můžete
například použít něco ve smyslu:
yum search gtk | grep
installed
Dále si ověřte, zda máte nainstalováno PHP 4.3.4 nebo novější. Pokud
jste četli předchozí díl seriálu, asi pro Vás nebude překvapením, že to
z terminálu většinou můžete provést pomocí příkazu:
php -v
Stáhněte si nejnovější verzi ze stránek gtk.php.net. Například v
době psaní tohoto článku to bylo takto:
wget
http://gtk.php.net/do_download.php?download_file=php-gtk-1.0.1.tar.gz
Směle to rozbalte a pusťte se do kompilace pomocí:
./buildconf
./configure
make
make install
Hotovo! Celý proces je poměrně dobře zdokumentován na stránkách
projektu, takže byste se v případě problémů neměli ztratit.
Něco málo příkladů
Především, kompletní popis již samotné filozofie použití PHP-GTK je
silně nad rámec tohoto článku, takže se omezíme jen na to opravdu
nejdůležitější. Klasický začátečnický příklad "Hello world" byste
pomocí PHP-GTK napsali nějak takto:
<?php
if (!extension_loaded('gtk')) {
dl( 'php_gtk.' . PHP_SHLIB_SUFFIX);
}
// při zavření okna
function destroy()
{
Gtk::main_quit();
}
// při kliknutí na tlačítko
function hello()
{
global $window;
$window->destroy();
}
// Nadefinujeme si okno
$window =
&new GtkWindow();
$window->set_border_width(10);
$window->connect('destroy', 'destroy');
// a čudlíček...
$button =
&new GtkButton('Hello World!');
$button->connect('clicked', 'hello');
//který do okna přidáme
$window->add($button);
// zobrazíme to ...
$window->show_all();
// a jedeme
Gtk::main();
?>
Dokážu si představit, že jste z toho dost vyjukaní, zejména pokud
jste nikdy nepracovali s jazyky ovládajícími grafické uživatelské
rozhraní (jako je C++, Java a podobně). Proto si příště tento příklad
trochu hlouběji rozebereme. Abych ale prozradil alespoň něco: tento
přístup využívá objekty; už jsme o nich mluvili v 19. a 20. díle
našeho seriálu. Objekty mohou vzájemně souviset (takže například
tlačítko souvisí s oknem, na němž je zobrazeno). Ale víc už
neprozradím, sledujte příští díl seriálu.
Mimochodem, docela by mě zajímalo, jestli někdo z čtenářů PHPGTK
používá a k čemu. Podělte se s námi v diskusi!
Verze pro tisk
|
Příspívat do diskuze mohou pouze registrovaní uživatelé.
|
|

Vyhledávání software

Vyhledávání článků
28.11.2018 23:56 /František Kučera Prosincový sraz spolku OpenAlt se koná ve středu 5.12.2018 od 16:00 na adrese Zikova 1903/4, Praha 6. Tentokrát navštívíme organizaci CESNET. Na programu jsou dvě přednášky: Distribuované úložiště Ceph (Michal Strnad) a Plně šifrovaný disk na moderním systému (Ondřej Caletka). Následně se přesuneme do některé z nedalekých restaurací, kde budeme pokračovat v diskusi.
Komentářů: 1
12.11.2018 21:28 /Redakce Linuxsoft.cz 22. listopadu 2018 se koná v Praze na Karlově náměstí již pátý ročník konference s tématem Datová centra pro business, která nabídne odpovědi na aktuální a často řešené otázky: Jaké jsou aktuální trendy v oblasti datových center a jak je optimálně využít pro vlastní prospěch? Jak si zajistit odpovídající služby datových center? Podle jakých kritérií vybírat dodavatele služeb? Jak volit vhodné součásti infrastruktury při budování či rozšiřování vlastního datového centra? Jak efektivně datové centrum spravovat? Jak co nejlépe eliminovat možná rizika? apod. Příznivci LinuxSoftu mohou při registraci uplatnit kód LIN350, který jim přinese zvýhodněné vstupné s 50% slevou.
Přidat komentář
6.11.2018 2:04 /František Kučera Říjnový pražský sraz spolku OpenAlt se koná v listopadu – již tento čtvrtek – 8. 11. 2018 od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Tentokrát bez oficiální přednášky, ale zato s dobrým jídlem a pivem – volná diskuse na téma umění a technologie, IoT, CNC, svobodný software, hardware a další hračky.
Přidat komentář
4.10.2018 21:30 /Ondřej Čečák LinuxDays 2018 již tento víkend, registrace je otevřená.
Přidat komentář
18.9.2018 23:30 /František Kučera Zářijový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 20. 9. 2018 od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Tentokrát bez oficiální přednášky, ale zato s dobrým jídlem a pivem – volná diskuse na téma IoT, CNC, svobodný software, hardware a další hračky.
Přidat komentář
9.9.2018 14:15 /Redakce Linuxsoft.cz 20.9.2018 proběhne v pražském Kongresovém centru Vavruška konference Mobilní řešení pro business.
Návštěvníci si vyslechnou mimo jiné přednášky na témata: Nejdůležitější aktuální trendy v oblasti mobilních technologií, správa a zabezpečení mobilních zařízení ve firmách, jak mobilně přistupovat k informačnímu systému firmy, kdy se vyplatí používat odolná mobilní zařízení nebo jak zabezpečit mobilní komunikaci.
Přidat komentář
12.8.2018 16:58 /František Kučera Srpnový pražský sraz spolku OpenAlt se koná ve čtvrtek – 16. 8. 2018 od 19:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát jsou tématem srazu databáze prezentaci svého projektu si pro nás připravil Standa Dzik. Dále bude prostor, abychom probrali nápady na využití IoT a sítě The Things Network, případně další témata.
Přidat komentář
16.7.2018 1:05 /František Kučera Červencový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 19. 7. 2018 od 18:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát bude přednáška na téma: automatizační nástroj Ansible, kterou si připravil Martin Vicián.
Přidat komentář
Více ...
Přidat zprávičku
 Poslední diskuze
31.7.2023 14:13 /
Linda Graham iPhone Services
30.11.2022 9:32 /
Kyle McDermott Hosting download unavailable
13.12.2018 10:57 /
Jan Mareš Re: zavináč
2.12.2018 23:56 /
František Kučera Sraz
5.10.2018 17:12 /
Jakub Kuljovsky Re: Jaký kurz a software by jste doporučili pro začínajcího kodéra?
Více ...
|