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

Lukáš Sliacky lukas na sliacky.eu
Pátek Březen 31 13:33:35 CEST 2017


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


Další informace o konferenci Python