处理 "add child to Gtk.Box" 事件
Handle "add child to Gtk.Box" event
据我所知,我可以订阅 Gtk.Box 信号 "add child":
box.connect("add", self.__add_to_switch_list)
当我通过 box.add(child)
添加子项时将调用它,它正在工作。
但是我如何用 box.pack_start()
方法做同样的事情?
没有办法。
"add"
仅在您调用 GtkContainer.add() 时发出。
此信号的第一个处理程序是子类的方法。例如,GtkBox 这样做:
/* gtk_box_class init: */
container_class->add = gtk_box_add;
...
static void
gtk_box_add (GtkContainer *container,
GtkWidget *widget)
{
GtkBoxPrivate *priv = GTK_BOX (container)->priv;
gtk_box_pack_start (GTK_BOX (container), widget,
priv->default_expand,
TRUE,
0);
}
在 very same bug report 中,@ebassi 告诉您可以连接到 child 小部件的 parent-set
信号。如果您不知道 parent 何时有新的 child,您可以知道 child 何时有新的 parent,这大致相同。
据我所知,我可以订阅 Gtk.Box 信号 "add child":
box.connect("add", self.__add_to_switch_list)
当我通过 box.add(child)
添加子项时将调用它,它正在工作。
但是我如何用 box.pack_start()
方法做同样的事情?
没有办法。
"add"
仅在您调用 GtkContainer.add() 时发出。
此信号的第一个处理程序是子类的方法。例如,GtkBox 这样做:
/* gtk_box_class init: */
container_class->add = gtk_box_add;
...
static void
gtk_box_add (GtkContainer *container,
GtkWidget *widget)
{
GtkBoxPrivate *priv = GTK_BOX (container)->priv;
gtk_box_pack_start (GTK_BOX (container), widget,
priv->default_expand,
TRUE,
0);
}
在 very same bug report 中,@ebassi 告诉您可以连接到 child 小部件的 parent-set
信号。如果您不知道 parent 何时有新的 child,您可以知道 child 何时有新的 parent,这大致相同。