Как изменить изображение, отображаемое в Gtk.EventBox?

Я пытаюсь реализовать кликабельное изображение с GTK и Vala. Из того, что я прочитал, лучший способ сделать это с помощью EventBox. Однако одно из моих требований - изменить изображение, отображаемое в EventBox. Я попытался сделать это следующим образом, но, хотя первое изображение исчезает при нажатии, второе никогда не появляется. Почему это? Что мне здесь не хватает?

using Gtk;

class Window : Gtk.Window {
    private EventBox evbox = new EventBox ();
    private Image img_a = new Image ();
    private Image img_b = new Image ();

    public Window () {
        this.destroy.connect (Gtk.main_quit);

        img_a.set_from_file ("a.png");
        img_b.set_from_file ("b.png");

        evbox.button_press_event.connect ( () => { swap_img (); return true; } );
        evbox.add (img_a);

        this.add (evbox);
    }

    public void swap_img () {
        evbox.remove (img_a);
        evbox.add (img_b);
    }


    public static int main (string[] args) {
        Gtk.init (ref args);

        var window = new Window ();

        window.show_all ();
        Gtk.main ();
        return 0;
    }
}

0 ответов

Другие вопросы по тегам