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
[email protected]
http://www.py.cz/mailman/listinfo/python
Visit: http://www.py.cz