Gtk-CRITICAL **: 16: 04: 21.737: gtk_box_pack: утверждение 'GTK_IS_WIDGET (child)' не выполнено - PullRequest
0 голосов
/ 27 февраля 2019

Я компилирую и запускаю приложение gtk, и я получаю эту ошибку во время работы, когда пытаюсь поместить кнопку в hbox.Что означает эта ошибка / как я могу это исправить.Я получаю это при запуске через терминал, и каким-то образом GTK печатает это, когда я нажимаю кнопку, которая выполняет эту функцию:

void ButtonHandler(void) {
    GtkWidget (*Button) = NULL;
    GtkWidget (*Entry) = gtk_entry_new();
    GtkWidget (*Vbox) = gtk_vbox_new(0, 8);
    GtkWidget (*Hbox) = gtk_hbox_new(0, 8);
    FILE (*SelectedWorld);
    gtk_container_add(GTK_CONTAINER(Vbox), Hbox);
    gtk_box_pack_start(GTK_BOX(Vbox), Entry, 1, 1, 0);
    gtk_box_pack_start(GTK_BOX(Hbox),Button, 1, 1, 0);//<---- here is the problem
    printf("Button pushed\n");
}

1 Ответ

0 голосов
/ 27 февраля 2019

О, вы просто забыли инициализировать кнопку с gtk_button_new.Проблема в том, что он не может положить NULL в vbox или hbox.Вот, пожалуйста:

void ButtonHandler(void) {
    GtkWidget *Button = gtk_button_new_with_label("Button");// <--- add this
    GtkWidget *Entry = gtk_entry_new();
    GtkWidget *Vbox = gtk_vbox_new(0, 8);
    GtkWidget *Hbox = gtk_hbox_new(0, 8);
    FILE *SelectedWorld;

    gtk_container_add(GTK_CONTAINER(Vbox), Hbox);
    gtk_box_pack_start(GTK_BOX(Vbox), Entry, 1, 1, 0);
    gtk_box_pack_start(GTK_BOX(Hbox),Button, 1, 1, 0);
    printf("Button pushed\n");
}
...