[python] Gtk LED on/off (začiatočník)

Petr Blahos petrblahos na gmail.com
Úterý Březen 25 20:32:41 CET 2014


>
> trochu som sa "hral s LEDkami" a chcel by som tam dorobiť funkciu blikania
> lediek.
>

[...]


>     def cyklus_bliknutia (self, button, name):
>         for name in range(4):
>             if button.get_active():
>                 self.leds[int(name)].set_from_file("LED_off.png")   # ak
> je aktívne zhasne LEDku
>             else:
>                 self.leds[int(name)].set_from_file("LED_on.png")    # ak
> nie je aktívne, zapne LEDku
>
> Viem, že je to blobosť hneď z niekoľkých dôvodov:
> 1, vo funckii 'blikanie' nevolám funkciu 'cyklus_bliknutia' pretože
> netuším, ako ju zavolať :)
> 2, vo funckii 'cyklus_bliknutia' mám síce for, ale zasa neviem, ako
> otestovať postupne všetky tlačítka, keďže to ide cez 'name'.
>
> Jde o to, co jsme psali u té předchozí otázky: Je tam Gtk.main(), což je
Event loop, která se stará
o to, aby poslala event tam, kam patří. Takže když máš
  button.connect("toggled", handler, ...)
tak ta event loop, musí v okamžiku, kdy se s tlačítkem stane toggle zavolat
handler. Ty potřebuješ,
aby v době, kdy chceš blikat, Ti event loop v pravidelných intervalech
říkala: Teď blikni.

  https://gist.github.com/petrblahos/9769152

To je ten GLib.timeout_add. Všimni si, že já nechám to "blikni" zavolat
ikdyž je tlačítko vypnuté, a
v handleru blink_timer se dívám, jestli je to tlačítko sepnuté. Tím pádem
ale nebliknu hned jak někdo
zmáčkne tlačítko, ale bliknu to 1/2 sekundy. Navíc to blikání je
konstantní, a nedívá se, co bylo na
obrázku, když se začalo blikat, takže celkově nic moc. No, takhle musí
programátor přemýšlet. Hmm.

[...]

>
> A teraz otázky:
> Je nejaké presné poradie, podľa ktorého je potrebné uvádzať tieto premenné
> v zátvorke?
> Môžem s nimi pracovať lubovoľne? Mám na mysli tak, že keby som napr. chcel
> moje dve pseudofunckie zlučiť do jednej, môžem použiť niečo ako (self,
> btn_blikanie, button, name)? A ak áno, v akom poradí?
>
[...]

Já bych se moc nechtěl pouštět do vysvětlování těchto konceptů přes mail, a
navíc na
tak pokročilém tématu, jako je tvorba UI. Bohužel Ti nedokážu poradit
vhodnou literaturu
na začátek, ale zkus si pročíst python.cz, protože v nějakém uceleném
tutoriálu, nebo
knize, to bude popsané konzistentněji, než to dokážeme my, tady na listu.

Tak mě napadlo, jak říkal Moss v IT Crowdu, díle Moss a Němec, občas je
potřeba zkusit
něco nového. Takže jestli chceš, udělám Ti korespondenční kurz tím
způsobem, že dostaneš
úkol, ten vyřešíš (nebo ne), já Ti to opravím, a pošlu další úkol. Teda s
tím, že nemám
rozmyšleno, jestli dokážu udělat ty správné úkoly :-)

-- 
Petr
____________________
http://pysk.blog.root.cz/
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://www.py.cz/pipermail/python/attachments/20140325/92441749/attachment.html>


Další informace o konferenci Python