【问题标题】:Gtk-CRITICAL **: 16:04:21.737: gtk_box_pack: assertion 'GTK_IS_WIDGET (child)' failedGtk-CRITICAL **: 16:04:21.737: gtk_box_pack: 断言 'GTK_IS_WIDGET (child)' 失败
【发布时间】:2019-02-26 23:09:45
【问题描述】:

我正在编译和运行一个 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");
}

【问题讨论】:

    标签: c gtk gtk2


    【解决方案1】:

    哦,你刚刚忘记用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");
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-22
      • 1970-01-01
      • 2017-03-14
      • 1970-01-01
      • 1970-01-01
      • 2021-09-21
      • 1970-01-01
      相关资源
      最近更新 更多