Re: [python] Gtk LED on/off (začiatočník)
2014-03-26 12:59 GMT+01:00 taz t...@picasa.cz: Ja bych se do korespondencniho kurzu taky prihlasil. Sam se nedokopu k nicemu. Beru Tě na vědomí, a ozvu se. Ber to tak, že z mojí strany je to taky experiment, a nevím, jestli se to podaří. Pro zájemce - diváky: Domluvili jsme se s Lukášem, že to zatím bude neveřejné, a budeme vás po nějakém čase informovat formou nějakého digestu. -- Petr ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz
Re: [python] Gtk LED on/off (začiatočník)
skoda :)) live by bylo super.. tak digest co nejdrive!! idealne pravidelne :)) 2014-03-30 20:33 GMT+02:00 Petr Blahos petrbla...@gmail.com: 2014-03-26 12:59 GMT+01:00 taz t...@picasa.cz: Ja bych se do korespondencniho kurzu taky prihlasil. Sam se nedokopu k nicemu. Beru Tě na vědomí, a ozvu se. Ber to tak, že z mojí strany je to taky experiment, a nevím, jestli se to podaří. Pro zájemce - diváky: Domluvili jsme se s Lukášem, že to zatím bude neveřejné, a budeme vás po nějakém čase informovat formou nějakého digestu. -- Petr ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz -- Jakub Vysoky mob: +420 605 852 377 jab: jakub.vys...@gmail.com twit: https://twitter.com/kvbik ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz
Re: [python] Gtk LED on/off (začiatočník)
Dne neděle, 30. března 2014 20:33:42 UTC+2 Petr Blahos napsal(a): 2014-03-26 12:59 GMT+01:00 taz t...@picasa.cz: Ja bych se do korespondencniho kurzu taky prihlasil. Sam se nedokopu k nicemu. Beru Tě na vědomí, a ozvu se. Ber to tak, že z mojí strany je to taky experiment, a nevím, jestli se to podaří. Pro zájemce - diváky: Domluvili jsme se s Lukášem, že to zatím bude neveřejné, a budeme vás po nějakém čase informovat formou nějakého digestu. -- Petr Pokud bude veřejné tak bych měl také zájem se zúčastnit. ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz
Re: [python] Gtk LED on/off (začiatočník)
Ahoj Petr, ďakujem za odpoveď. Vidím, že som si na začiatok nevybral úplne jednoduchú úlohu :) Bral som to, že sa Python naučím nejak za jazdy, ale vidím, že si budem musieť podrobnejšie naštudovať niektoré témy. Čo sa týka Tvojej ponuky, pokiaľ by Ti to nerobilo problémy, som určite za. Síce si to tiež asi neviem ideálne predstaviť, ale však, prečo to neskúsiť? (Ak si to predstavuješ za nejakú finančnú, resp. nejakú bartrovú odmenu, podmienky si môžeme dohodnúť mailom). Čo sa týka public diskusie, mne osobne to nevadí a pokiaľ bude Petr súhlasiť, môžeme to vyskúšať. Lukáš ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz
Re: [python] Gtk LED on/off (začiatočník)
Ahoj Petr, trochu som sa hral s LEDkami a chcel by som tam dorobiť funkciu blikania lediek. Rozšíril som tabuľku: okno = Gtk.Table(5, 2, True) Pridal button: btn_blikanie = Gtk.ToggleButton(Blikanie) btn_blikanie.connect(toggled, self.blikanie) btn_blikanie.set_border_width(2) a samozrejme som zhavaroval na samotnej funckii... Snažil som sa to urobiť nejak takto: def blikanie(self, btn_blikanie): if btn_blikanie.get_active(): print ('Zapnuté') else: print ('Vypnuté') 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'. Vedel by si mi s tým, prosím, trochu pomôcť? Ale priznám sa tiež, že mám trochu hokej v (self, button, name):... Ty si vytvoril funkciu: def led_button_handler(self, button, name): self.leds[int(name)].set_from_file( LED_on.png if button.get_active() else LED_off.png, ) a v zátvorke máš (self, button, name): Self sa používa pravdepodobne univerzálne vo všetkých funciách. Button si použil, pretože vo funkcii testuješ button.get_active a name pretože potrebuješ ovládať LEDky podľa ich názvov: str(i). 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í? Snažil som sa to spísať čo najpresnejšie, ale so svete pythonu (a programovania) som skutočne krátko a tak je možné, že som sa vyjadroval blbo. Ak je potrebné niečo upresniť, resp. spýtať sa logickejšie, stačí napísať. Ďakujem za odpovede. Lukáš ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz
Re: [python] Gtk LED on/off (začiatočník)
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/ ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz
Re: [python] Gtk LED on/off (začiatočník)
ad neco noveho udelejte to tady pres konferenci, nebo kdekoliv jinde, ale public - myslim, ze by to mohlo byt zajimave pro spoustu lidi to alespon sledovat (nebo se i pripojit?) a treba na to pak i vselijak navazat.. co vy a to? 2014-03-25 20:32 GMT+01:00 Petr Blahos petrbla...@gmail.com: 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/ ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz -- Jakub Vysoky mob: +420 605 852 377 jab: jakub.vys...@gmail.com twit: https://twitter.com/kvbik ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz
Re: [python] Gtk LED on/off (začiatočník)
Mne by se to rozhodne libilo (public). A jestli to neni prace navic... A. -- Ales Zoulek +420 604 332 515 Jabber: ales.zou...@gmail.com -- 2014-03-25 21:40 GMT+01:00 Jakub Vysoky ja...@borka.cz: ad neco noveho udelejte to tady pres konferenci, nebo kdekoliv jinde, ale public - myslim, ze by to mohlo byt zajimave pro spoustu lidi to alespon sledovat (nebo se i pripojit?) a treba na to pak i vselijak navazat.. co vy a to? 2014-03-25 20:32 GMT+01:00 Petr Blahos petrbla...@gmail.com: 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/ ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz -- Jakub Vysoky mob: +420 605 852 377 jab: jakub.vys...@gmail.com twit: https://twitter.com/kvbik ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz
Re: [python] Gtk LED on/off (začiatočník)
Wow, Petr, funguje to presne tak, ako som chcel. Idem sa v tom povŕtať, aby som úplne pochopil ten Tvoj kód. Naozaj ďakujem za ochotu. ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz
Re: [python] Gtk LED on/off (začiatočník)
Ahoj, zkus tohle: https://gist.github.com/petrblahos/9648800 a klidně se ptej. Ovšem připomínám, že s Gtk nedělám, takže je možné, že Best Practices jsou někde jinde. Je tam problém, že se mnohokrát volá set_from_file. Správně by bylo si ty 2 obrázky na začátku nahrát, a potom je jen použít. -- Petr 2014-03-18 18:19 GMT+01:00 Lukáš Sliacky lu...@sliacky.eu: Ahoj Petr, ďakujem za ochotu. Rozumiem tomu, čo si chcel povedať, ale žiaľ, toto je môj prvý program, takže sa s tým celkom dobre trápim. (Hotovým zdrojákom ako tak rozumiem, ale ak mám vyprodukovať niečo z hlavy, je to problém) Snažil som sa Tvoj pseudokód preložiť do reálneho kódu, ale na to mám príliš málo vedomostí a skúseností. Výsledok je tu: from gi.repository import Gtk import sys class LedControl(Gtk.Window): def __init__(self): Gtk.Window.__init__(self, title=LED Control) self.set_border_width(6) self.set_default_size(200, 250) okno = Gtk.Table(4, 2, True) self.add(okno) img_LED_on = Gtk.Image() img_LED_on.set_from_file(LED_on.png) #~ self.add(img_LED_on) img_LED_off = Gtk.Image() img_LED_off.set_from_file(LED_off.png) #~ self.add(img_LED_off) widget_LED1 = Gtk.Image() widget_LED2 = Gtk.Image() widget_LED3 = Gtk.Image() widget_LED4 = Gtk.Image() widget1 = Gtk.Image() widget2 = Gtk.Image() widget3 = Gtk.Image() widget4 = Gtk.Image() button_LED_1 = Gtk.ToggleButton(LED 1) button_LED_1.connect(toggled, self.LED_OnOff, 1) button_LED_1.set_border_width(2) button_LED_2 = Gtk.ToggleButton(LED 2) button_LED_2.connect(toggled, self.LED_OnOff, 2) button_LED_2.set_border_width(2) button_LED_3 = Gtk.ToggleButton(LED 3) button_LED_3.connect(toggled, self.LED_OnOff, 3) button_LED_3.set_border_width(2) button_LED_4 = Gtk.ToggleButton(LED 4) button_LED_4.connect(toggled, self.LED_OnOff, 4) button_LED_4.set_border_width(2) led_widgets = { button_LED_1.id: widget1, button_LED_2.id: widget2, button_LED_3.id: widget3, button_LED_4.id: widget4 } okno.attach(button_LED_1, 0, 1, 0, 1) okno.attach(button_LED_2, 0, 1, 1, 2) okno.attach(button_LED_3, 0, 1, 2, 3) okno.attach(button_LED_4, 0, 1, 3, 4) #~ widget1.set_from_image(img_LED_off) #~ widget1.set_from_image(img_LED_off) #~ widget1.set_from_image(img_LED_off) #~ widget1.set_from_image(img_LED_off) okno.attach = (widget_LED1, 1, 2, 2, 3) okno.attach = (widget_LED2, 1, 2, 0, 1) okno.attach = (widget_LED3, 1, 2, 1, 2) okno.attach = (widget_LED4, 1, 2, 2, 3) def LED_OnOff(self, okno, name): if okno.get_active(): status = on led_widgets[okno.id].set_from_image(img_LED_on) else: status = off led_widgets[okno.id].set_from_image(img_LED_off) print(Tlačítko LED, name, zmenilo stav na, status) app = LedControl() app.connect(delete-event, Gtk.main_quit) app.show_all() Gtk.main() Našiel by sa niekto ochotný a hlavne trpezlivý, kto by ma posunul kúsok ďalej? Ďakujem. Lukáš ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz -- http://pysk.blog.root.cz/ ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz
Re: [python] Gtk LED on/off (začiatočník)
Ahoj, já v Gtk nedělám, ale aspoň tohle: v LED_OnOff je proměnná img_LED, která není nikde jinde. vůbec v tom kódu nevidím důvod, proč by se něco mělo rozsvítit, nebo zhasnout. img_LED_on a img_LED_off je widget - nějaký ten prvek, který se někam umístí. Je to jeden prvek, tak se umístí na jedno místo. Pokud jej chceš vícekrát, musíš jich vyrobit více, a každý z nich umístit. Jedna věc je, že si určitě můžeš nahrát obrázek jednou, a pak jej přiřadit více prvkům, jako třeba (pseudo kód, Gtk neumím) img_led_on = load_image(led_on.png) # asi neco v gdk img_led_off = load_image(led_off.png) widget1 = Gtk.Image() widget2 = Gtk.Image() widget3 = Gtk.Image() button1 = Gtk.ToggleButton(...) button2 = Gtk.ToggleButton(...) button3 = Gtk.ToggleButton(...) # a napr: led_widgets = { button1.id: widget1, button2.id: widget2, button3.id: widget3, } # nastavení obrázku: widget1.set_from_image(img_led_on) widget2.set_from_image(img_led_on) widget3.set_from_image(img_led_on) # ... No a pak bude handler: def LED_OnOff(self, okno, name): if okno.get_active(): led_widgets[okno.id].set_from_image(img_led_on) else: led_widgets[okno.id].set_from_image(img_led_off) # nektere frameworky vyzaduji volani nejakeho refresh Nevím, jak je to s ID okna v GTK, možná se identifikuje jinak než přes ID. Určitě je tu spousta lidí, kteří upřesní to GTK, ale takhle bych to vprincipu viděl jako jednoduše pochopitelné. -- Petr 2014-03-17 22:53 GMT+01:00 lu...@sliacky.eu: Ahojte, v Pythone som úplný začiatočník a chcem urobiť program, ktorý simuluje zapínanie a vypínanie LEDiek v závislosti na ToggleButtonoch. Momentálne mám hotové toto: from gi.repository import Gtk import sys class LedControl(Gtk.Window): def __init__(self): Gtk.Window.__init__(self, title=LED Control) self.set_border_width(6) self.set_default_size(200, 250) okno = Gtk.Table(4, 2, True) self.add(okno) img_LED_on = Gtk.Image() img_LED_on.set_from_file(LED_on.png) self.add(img_LED_on) img_LED_off = Gtk.Image() img_LED_off.set_from_file(LED_off.png) self.add(img_LED_off) button_LED_1 = Gtk.ToggleButton(LED 1) button_LED_1.connect(toggled, self.LED_OnOff, 1) button_LED_1.set_border_width(2) button_LED_2 = Gtk.ToggleButton(LED 2) button_LED_2.connect(toggled, self.LED_OnOff, 2) button_LED_2.set_border_width(2) button_LED_3 = Gtk.ToggleButton(LED 3) button_LED_3.connect(toggled, self.LED_OnOff, 3) button_LED_3.set_border_width(2) button_LED_4 = Gtk.ToggleButton(LED 4) button_LED_4.connect(toggled, self.LED_OnOff, 4) button_LED_4.set_border_width(2) okno.attach(button_LED_1, 0, 1, 0, 1) okno.attach(button_LED_2, 0, 1, 1, 2) okno.attach(button_LED_3, 0, 1, 2, 3) okno.attach(button_LED_4, 0, 1, 3, 4) okno.attach(img_LED_off, 1, 2, 0, 1) okno.attach(img_LED_on, 1, 2, 1, 2) #~ okno.attach(img_LED_off, 1, 2, 2, 3) #~ okno.attach(img_LED_on, 1, 2, 3, 4) def LED_OnOff(self, okno, name): if okno.get_active(): status = on else: status = off img_LED=0 print(Tlačítko LED, name, zmenilo stav na, status) app = LedControl() app.connect(delete-event, Gtk.main_quit) app.show_all() Gtk.main() ale nedarí sa mi rozchodiť svietenie LEDiek (LED_on.png / LED_off.png) na pozíciách vedľa jednotlivých tlačítok (LED 1 je vedľa tlačítka LED 1). Tiež sa chcem spýtať, prečo sa načítaný obrázok zobrazuje len jeden krát. Napr. keď chcem načítať obrázok LED_on.png 2x pod sebou, zobrazí sa vždy len raz: okno.attach(img_LED_on, 1, 2, 0, 1) okno.attach(img_LED_on, 1, 2, 1, 2) (Spodný obrázok sa nezobrazuje.) Našiel by sa niekto, kto by mi vedel poradiť? (Ak sú potrebné dodatočné informácie, rád ich obratom poskytnem.) Ďakujem. ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz -- http://pysk.blog.root.cz/ ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz
Re: [python] Gtk LED on/off (začiatočník)
Ahoj Petr, ďakujem za ochotu. Rozumiem tomu, čo si chcel povedať, ale žiaľ, toto je môj prvý program, takže sa s tým celkom dobre trápim. (Hotovým zdrojákom ako tak rozumiem, ale ak mám vyprodukovať niečo z hlavy, je to problém) Snažil som sa Tvoj pseudokód preložiť do reálneho kódu, ale na to mám príliš málo vedomostí a skúseností. Výsledok je tu: from gi.repository import Gtk import sys class LedControl(Gtk.Window): def __init__(self): Gtk.Window.__init__(self, title=LED Control) self.set_border_width(6) self.set_default_size(200, 250) okno = Gtk.Table(4, 2, True) self.add(okno) img_LED_on = Gtk.Image() img_LED_on.set_from_file(LED_on.png) #~ self.add(img_LED_on) img_LED_off = Gtk.Image() img_LED_off.set_from_file(LED_off.png) #~ self.add(img_LED_off) widget_LED1 = Gtk.Image() widget_LED2 = Gtk.Image() widget_LED3 = Gtk.Image() widget_LED4 = Gtk.Image() widget1 = Gtk.Image() widget2 = Gtk.Image() widget3 = Gtk.Image() widget4 = Gtk.Image() button_LED_1 = Gtk.ToggleButton(LED 1) button_LED_1.connect(toggled, self.LED_OnOff, 1) button_LED_1.set_border_width(2) button_LED_2 = Gtk.ToggleButton(LED 2) button_LED_2.connect(toggled, self.LED_OnOff, 2) button_LED_2.set_border_width(2) button_LED_3 = Gtk.ToggleButton(LED 3) button_LED_3.connect(toggled, self.LED_OnOff, 3) button_LED_3.set_border_width(2) button_LED_4 = Gtk.ToggleButton(LED 4) button_LED_4.connect(toggled, self.LED_OnOff, 4) button_LED_4.set_border_width(2) led_widgets = { button_LED_1.id: widget1, button_LED_2.id: widget2, button_LED_3.id: widget3, button_LED_4.id: widget4 } okno.attach(button_LED_1, 0, 1, 0, 1) okno.attach(button_LED_2, 0, 1, 1, 2) okno.attach(button_LED_3, 0, 1, 2, 3) okno.attach(button_LED_4, 0, 1, 3, 4) #~ widget1.set_from_image(img_LED_off) #~ widget1.set_from_image(img_LED_off) #~ widget1.set_from_image(img_LED_off) #~ widget1.set_from_image(img_LED_off) okno.attach = (widget_LED1, 1, 2, 2, 3) okno.attach = (widget_LED2, 1, 2, 0, 1) okno.attach = (widget_LED3, 1, 2, 1, 2) okno.attach = (widget_LED4, 1, 2, 2, 3) def LED_OnOff(self, okno, name): if okno.get_active(): status = on led_widgets[okno.id].set_from_image(img_LED_on) else: status = off led_widgets[okno.id].set_from_image(img_LED_off) print(Tlačítko LED, name, zmenilo stav na, status) app = LedControl() app.connect(delete-event, Gtk.main_quit) app.show_all() Gtk.main() Našiel by sa niekto ochotný a hlavne trpezlivý, kto by ma posunul kúsok ďalej? Ďakujem. Lukáš ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz
[python] Gtk LED on/off (začiatočník)
Ahojte, v Pythone som úplný začiatočník a chcem urobiť program, ktorý simuluje zapínanie a vypínanie LEDiek v závislosti na ToggleButtonoch. Momentálne mám hotové toto: from gi.repository import Gtk import sys class LedControl(Gtk.Window): def __init__(self): Gtk.Window.__init__(self, title=LED Control) self.set_border_width(6) self.set_default_size(200, 250) okno = Gtk.Table(4, 2, True) self.add(okno) img_LED_on = Gtk.Image() img_LED_on.set_from_file(LED_on.png) self.add(img_LED_on) img_LED_off = Gtk.Image() img_LED_off.set_from_file(LED_off.png) self.add(img_LED_off) button_LED_1 = Gtk.ToggleButton(LED 1) button_LED_1.connect(toggled, self.LED_OnOff, 1) button_LED_1.set_border_width(2) button_LED_2 = Gtk.ToggleButton(LED 2) button_LED_2.connect(toggled, self.LED_OnOff, 2) button_LED_2.set_border_width(2) button_LED_3 = Gtk.ToggleButton(LED 3) button_LED_3.connect(toggled, self.LED_OnOff, 3) button_LED_3.set_border_width(2) button_LED_4 = Gtk.ToggleButton(LED 4) button_LED_4.connect(toggled, self.LED_OnOff, 4) button_LED_4.set_border_width(2) okno.attach(button_LED_1, 0, 1, 0, 1) okno.attach(button_LED_2, 0, 1, 1, 2) okno.attach(button_LED_3, 0, 1, 2, 3) okno.attach(button_LED_4, 0, 1, 3, 4) okno.attach(img_LED_off, 1, 2, 0, 1) okno.attach(img_LED_on, 1, 2, 1, 2) #~ okno.attach(img_LED_off, 1, 2, 2, 3) #~ okno.attach(img_LED_on, 1, 2, 3, 4) def LED_OnOff(self, okno, name): if okno.get_active(): status = on else: status = off img_LED=0 print(Tlačítko LED, name, zmenilo stav na, status) app = LedControl() app.connect(delete-event, Gtk.main_quit) app.show_all() Gtk.main() ale nedarí sa mi rozchodiť svietenie LEDiek (LED_on.png / LED_off.png) na pozíciách vedľa jednotlivých tlačítok (LED 1 je vedľa tlačítka LED 1). Tiež sa chcem spýtať, prečo sa načítaný obrázok zobrazuje len jeden krát. Napr. keď chcem načítať obrázok LED_on.png 2x pod sebou, zobrazí sa vždy len raz: okno.attach(img_LED_on, 1, 2, 0, 1) okno.attach(img_LED_on, 1, 2, 1, 2) (Spodný obrázok sa nezobrazuje.) Našiel by sa niekto, kto by mi vedel poradiť? (Ak sú potrebné dodatočné informácie, rád ich obratom poskytnem.) Ďakujem. ___ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz