[python] Gtk LED on/off (začiatočník)
Petr Blahos
petrblahos na gmail.com
Úterý Březen 18 08:04:02 CET 2014
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 <lukas na 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 na py.cz
> http://www.py.cz/mailman/listinfo/python
>
> Visit: http://www.py.cz
>
--
____________________
http://pysk.blog.root.cz/
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://www.py.cz/pipermail/python/attachments/20140318/4bbbc3f2/attachment.html>
Další informace o konferenci Python