Gtk-CRITICAL **:16:04:21.737:gtk_box_pack:断言'GTK_IS_WIDGET(child)'失败

时间:2019-02-26 23:09:45

标签: c gtk gtk2

我正在编译并运行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 :(得分:0)

哦,您只是忘记了用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");
}