<div dir="ltr">Ahoj, já v Gtk nedělám, ale aspoň tohle:<div><br></div><div>v LED_OnOff je proměnná img_LED, která není nikde jinde.</div><div><br></div><div>vůbec v tom kódu nevidím důvod, proč by se něco mělo rozsvítit, nebo zhasnout.</div>

<div><br></div><div>img_LED_on a img_LED_off je widget - nějaký ten prvek, který se někam umístí. Je to </div><div>jeden prvek, tak se umístí na jedno místo. Pokud jej chceš vícekrát, musíš jich vyrobit</div><div>více, a každý z nich umístit. Jedna věc je, že si určitě můžeš nahrát obrázek jednou, </div>

<div>a pak jej přiřadit více prvkům, jako třeba (pseudo kód, Gtk neumím)</div><div><br></div><div>img_led_on = load_image("led_on.png")  # asi neco v gdk</div><div><div>img_led_off = load_image("led_off.png")</div>

</div><div><br></div><div>widget1 = Gtk.Image()</div><div><div>widget2 = Gtk.Image()</div></div><div><div>widget3 = Gtk.Image()</div></div><div><div><br></div></div><div>button1 = Gtk.ToggleButton(...)</div><div><div>button2 = Gtk.ToggleButton(...)</div>

</div><div><div>button3 = Gtk.ToggleButton(...)</div></div><div><br></div><div># a napr:</div><div>led_widgets = {</div><div>    <a href="http://button1.id">button1.id</a>: widget1,</div><div><div>    <a href="http://button2.id">button2.id</a>: widget2,</div>

</div><div><div><div>    <a href="http://button3.id">button3.id</a>: widget3,</div><div>}</div><div><br></div><div></div></div></div><div># nastavení obrázku:</div><div>widget1.set_from_image(img_led_on)</div><div>widget2.set_from_image(img_led_on)</div>

<div>widget3.set_from_image(img_led_on)</div><div># ...</div><div><br></div><div>No a pak bude handler:<br></div><div><div><br></div><div>def LED_OnOff(self, okno, name):</div><div>    if okno.get_active():</div><div>        led_widgets[<a href="http://okno.id">okno.id</a>].set_from_image(img_led_on)<br>

</div><div>    else:</div><div>        led_widgets[<a href="http://okno.id">okno.id</a>].set_from_image(img_led_off)<br></div><div>    # nektere frameworky vyzaduji volani nejakeho refresh</div><div><br></div></div><div>
Nevím, jak je to s ID okna v GTK, možná se identifikuje jinak než přes ID.</div>
<div>Určitě je tu spousta lidí, kteří upřesní to GTK, ale takhle bych to vprincipu </div><div>viděl jako jednoduše pochopitelné.</div><div><br></div><div>--</div><div>Petr</div><div><br></div></div><div class="gmail_extra">

<br><br><div class="gmail_quote">2014-03-17 22:53 GMT+01:00  <span dir="ltr"><<a href="mailto:lukas@sliacky.eu" target="_blank">lukas@sliacky.eu</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

Ahojte,<br>
<br>
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.<br>
<br>
Momentálne mám hotové toto:<br>
<br>
from gi.repository import Gtk<br>
import sys<br>
<br>
class LedControl(Gtk.Window):<br>
<br>
    def __init__(self):<br>
        Gtk.Window.__init__(self, title="LED Control")<br>
        self.set_border_width(6)<br>
        self.set_default_size(200, 250)<br>
<br>
        okno = Gtk.Table(4, 2, True)<br>
        self.add(okno)<br>
<br>
        img_LED_on = Gtk.Image()<br>
        img_LED_on.set_from_file("LED_on.png")<br>
        self.add(img_LED_on)<br>
<br>
        img_LED_off = Gtk.Image()<br>
        img_LED_off.set_from_file("LED_off.png")<br>
        self.add(img_LED_off)<br>
<br>
        button_LED_1 = Gtk.ToggleButton("LED 1")<br>
        button_LED_1.connect("toggled", self.LED_OnOff, "1")<br>
        button_LED_1.set_border_width(2)<br>
<br>
        button_LED_2 = Gtk.ToggleButton("LED 2")<br>
        button_LED_2.connect("toggled", self.LED_OnOff, "2")<br>
        button_LED_2.set_border_width(2)<br>
<br>
        button_LED_3 = Gtk.ToggleButton("LED 3")<br>
        button_LED_3.connect("toggled", self.LED_OnOff, "3")<br>
        button_LED_3.set_border_width(2)<br>
<br>
        button_LED_4 = Gtk.ToggleButton("LED 4")<br>
        button_LED_4.connect("toggled", self.LED_OnOff, "4")<br>
        button_LED_4.set_border_width(2)<br>
<br>
        okno.attach(button_LED_1, 0, 1, 0, 1)<br>
        okno.attach(button_LED_2, 0, 1, 1, 2)<br>
        okno.attach(button_LED_3, 0, 1, 2, 3)<br>
        okno.attach(button_LED_4, 0, 1, 3, 4)<br>
<br>
        okno.attach(img_LED_off, 1, 2, 0, 1)<br>
        okno.attach(img_LED_on, 1, 2, 1, 2)<br>
        #~ okno.attach(img_LED_off, 1, 2, 2, 3)<br>
        #~ okno.attach(img_LED_on, 1, 2, 3, 4)<br>
<br>
    def LED_OnOff(self, okno, name):<br>
        if okno.get_active():<br>
            status = "on"<br>
        else:<br>
            status = "off"<br>
            img_LED=0<br>
        print("Tlačítko LED", name, "zmenilo stav na", status)<br>
<br>
app = LedControl()<br>
app.connect("delete-event", Gtk.main_quit)<br>
app.show_all()<br>
Gtk.main()<br>
<br>
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).<br>
<br>
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:<br>
        okno.attach(img_LED_on, 1, 2, 0, 1)<br>
        okno.attach(img_LED_on, 1, 2, 1, 2)<br>
(Spodný obrázok sa nezobrazuje.)<br>
<br>
Našiel by sa niekto, kto by mi vedel poradiť? (Ak sú potrebné dodatočné informácie, rád ich obratom poskytnem.)<br>
<br>
Ďakujem.<br>
_______________________________________________<br>
Python mailing list<br>
<a href="mailto:python@py.cz">python@py.cz</a><br>
<a href="http://www.py.cz/mailman/listinfo/python" target="_blank">http://www.py.cz/mailman/listinfo/python</a><br>
<br>
Visit: <a href="http://www.py.cz" target="_blank">http://www.py.cz</a><br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div dir="ltr">____________________<br><div><a href="http://pysk.blog.root.cz/" target="_blank">http://pysk.blog.root.cz/</a><br></div></div>
</div>