Обработать событие «Добавить ребенка в Gtk.Box» - PullRequest
0 голосов
/ 03 мая 2018

Насколько мне известно, я могу подписаться на сигнал Gtk.Box "добавить ребенка":

box.connect("add", self.__add_to_switch_list)

, который будет вызван, когда я добавлю дочерний элемент box.add(child), и он заработает.

Но как бы я поступил так же с box.pack_start() методом?

Ответы [ 2 ]

0 голосов
/ 04 мая 2018

В этом том же отчете об ошибке , @ebassi сообщает, что вы можете подключиться к сигналу parent-set дочернего виджета. Если вы не можете знать, когда у родителя появился новый ребенок, вы можете знать, когда у ребенка появился новый родитель, что примерно одинаково.

0 голосов
/ 03 мая 2018

Нет пути.


"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);
}
...