[python] GUI - GTK
Ivo Štolpa
pussa na pussa.cz
Pátek Červenec 15 08:41:48 CEST 2005
Petr Mach napsal(a):
> VANĚK Petr napsal(a):
>
>>> Osobně se mi zdá Tk uz ponekud zastarale. Neni prinosnejsi
>>> investovat do uceni se neceho modernejsiho? Osobne doporucuji GTK.
>>> Tim ze clovek pozna
>>> tutuo knihovnu nic neztrati ani kdyz pak zacne pouzivat treba jazyk C a
>>> muze ji bez problemu pouzivat pod Linuxem i Windows, a i na dalsich
>>> platformach, ale s tim nemam osobni zkusenosti.
>>
>>
>>
>> inu. v jadru s tim souhlasim. Je tu ale jedna, vlastne dve,
>> zaludnost. Tk je - buhvi proc -
>> stale standardni GUI toolkit v Pythonu [1]. A druha, osobni, Gtk je
>> skoro stejne peklo.
>> Konec invektivy. ;)
>>
>> poznamka [1] - sice to vyvojari tvrdi, ale na macu uz treba Tk
>> implicitne neni...
>
>
> No, proc je TK standardni toolkit v Pythonu nechapu. Evidentne se nikomu
> nelibi, protoze navzdory tomu, ze je standardni soucasti a jeho pouzti
> je tak nejmene problemove, tak se temer nepouziva. Imho by se mel
> vyradit, jen zbytecne Python nafukuje.
>
> Co se ti nelibi na GTK? Ja jsem koukal na vic toolkitu a GTK mi vychazi
> jednoznacne nejlepe. Urcite to neni zadne peklo. Je schopny, dobre
> se v nem programuje, je dobre zdokumentovany, je dobre podporovany a
> multiplatformni, je rozsireny, ma dobrou licenci. Aktivne ho pouzivam
> a nejsem si vedom zadneho nedostatku.
>
> Jen pro srovnani, tady je kompletni priklad demonstracni ukazky
> zachazeni s CheckBoxy v PyGTK.
>
> = BEGIN =============================================================
>
> #!/usr/bin/python
> # -*- coding: utf-8 -*-
> import gtk
>
> # obsluha udalosti
>
> def printStatus(button, checks):
> for check in checks:
> if check.get_active():
> stat = "je zatržen."
> else:
> stat = "není zatžen."
>
> print check.get_label(), stat
>
> def quit( event, data=None ):
> gtk.main_quit()
>
> # GUI
>
> checks = []
> checks.append( gtk.CheckButton( label="První" ))
> checks.append( gtk.CheckButton( label="Druhý" ))
> checks.append( gtk.CheckButton( label="Třetí" ))
> checks.append( gtk.CheckButton( label="Čtvrtý" ))
> checks.append( gtk.CheckButton( label="Pátý" ))
>
> button = gtk.Button( label="Vytiskni stav" )
> button.connect( 'clicked', printStatus, checks )
>
> vbox = gtk.VBox()
> for check in checks: vbox.pack_start( check )
> vbox.pack_start( button )
>
> win = gtk.Window()
> win.set_border_width( 10 )
> win.connect( 'destroy', quit )
> win.add( vbox )
> win.show_all()
>
> # cekani na udalost
>
> gtk.main()
>
> = END ===============================================================
>
> Vystup je takovy:
>
> [wraith na frodo ~]$ python checks.py
> První je zatržen.
> Druhý není zatžen.
> Třetí je zatržen.
> Čtvrtý není zatžen.
> Pátý je zatržen.
>
> Obrazek aplikace posilam prilohou. Vskutku si myslim, ze GTK toolkit
> je snadny na pouzivani (a to nezminuji glade, v kterem si GUI navrhnes
> vizualne a v pythonu dopises obsluhu udalosti) i nauceni se.
>
>------------------------------------------------------------------------
>
>_______________________________________________
>Python mailing list
>Python na py.cz
>http://www.py.cz/mailman/listinfo/python
>
Já používám GTK teď již více jak rok a mohu potvrdit Petrova slova. Na
GTK se mi líbí mnoho věcí nejvíce však wrapper PyGTK. Ten je opravdu
pytonní. GTK se díky jemu stává opravdovou součástí Pythonu a ne jen
nějakou externí knihovnou. Když jsem začínal, tak Tk jsem zavrhl vlastně
ihned. Qt jsem kvůli nešťastnému licencování pod Windows musel vynechat
taky. Asi nejrozsáhlejší wx jsem nakonec zavrhl protože práce s ní i v
pythonu je moc C++ (toto je prosím jen můj názor člověka, který prostě
nemá rád C++) a tak nakonec vyhrálo menší a jednodušší GTK. Za celý rok
jsem nelitoval. Na GTK mne mrzí jen dvě věci. 1. že neumí (nebo jsem na
to nepřišel) zobrazit html stránku v okně GTK. 2. že nemá svůj vlastní
tiskový mechanismus s preview (wx ho má). Kolem druhého bodu se poslední
dobou něco děje, ale zatím je brzy na nějaké závěry. Teď to řeším
knihovnou reportlab a zobrazením výsledného pdf v externím programu.
Kdyby bylo na mě, tak bych Tkiner z Pythonu vyřadil. Jeho přítomnost je
čistě historická. I když mě nevadí, protože na disku mám místa dost a
pro distribuci uživatelům používám McMillan Install a tam se Tkiner
nepřibalí, pokud jej nepoužiji.
Pokud na wiki vznikne nejaký základ o používání GTK, rád jej doplním i
svými poznatky.
Ivo
--
Ing. Ivo Štolpa
***********************************************
PUSSA software, Žižkova 13, 58601 Jihlava
e-mail: pussa na pussa.cz, ivo.stolpa na seznam.cz
stránky: http://www.pussa.cz
mobilní telefon: 602 735 124
pevná linka: 567 320 386
fax: 602 783 071
***********************************************
Další informace o konferenci Python