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

Lukáš Sliacky lukas na sliacky.eu
Úterý Březen 25 10:38:15 CET 2014


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áš


Další informace o konferenci Python