如何更改Gtk.EventBox中显示的图像?

时间:2017-02-10 22:16:37

标签: gtk gtk3 vala

我正在尝试使用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 个答案:

没有答案