我正在尝试使用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;
}
}