c - Gtk-关键 ** : IA__gtk_widget_get_parent: assertion `GTK_IS_WIDGET (widget)' failed

标签 c user-interface gtk

我正在尝试访问 GTK Widget,现在该小部件的任何属性都可以,但我不断收到错误:

Gtk-CRITICAL **: IA__FUNCTIONAME: assertion `GTK_IS_WIDGET (widget)' failed

这是我到目前为止的代码,以及相关的部分:

///////// FILE 1 /////////////////

GtkWidget *textbox1;                        //declared at the top of the file 
GtkTextBuffer *text;

void onscreen (int type, char* key)
{
    if (type == -1) {
        //remove widget
    } 
    else if (type == 1) {
        gtk_widget_destroy(GTK_WIDGET(textbox1));     
        //THE OFFENDING LINE  ^^^
    }
}

int main (int argc, char *argv[])
{
    gtk_init(&argc, &argv);

    /*more code*/

    textbox1 = gtk_text_view_new();
    text = gtk_text_view_get_buffer(GTK_TEXT_VIEW(textbox1));
    GtkTextIter iter;
    gtk_text_buffer_get_iter_at_offset(text, &iter, 0);
    gtk_text_buffer_insert(text, &iter, "plain text\n", -1); 

    vbox = gtk_vbox_new(FALSE, 8);
    gtk_container_add(GTK_CONTAINER(window), vbox);

    gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
    gtk_box_pack_start(GTK_BOX(vbox), zbarwidgets, TRUE, TRUE, 0);
    gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(results), FALSE, FALSE, 0);

    gtk_widget_show_all(window);
    gtk_main();
    return(0);
}

///////// FILE 1 /////////////////

然后我在另一个文件中有更多代码( header 等...都包含在内),它调用文件 2 中的第一个函数,如下所示:

///////// FILE 2 /////////////////

static inline int window_draw (window_t *w) {
    /* do some stuff */
    onscreen(1, sym->data);
    /* do some stuff */
}

///////// FILE 2 /////////////////

谢谢!

最佳答案

您的错误不在上面显示的代码中,其他一些函数确实修改了 textbox1

另请注意,根据所示代码,gtk_widget_get_parent 将始终返回 NULL

为什么要使用gdk_threads_* 不要这样做,除非你真的遇到线程问题 - 而且它也没有被弃用(据我所知)。

关于c - Gtk-关键 ** : IA__gtk_widget_get_parent: assertion `GTK_IS_WIDGET (widget)' failed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18759451/

相关文章:

python - Gtk:如何在带有与整个文件相关的滚动条的 TextView 中获取文件的一部分

c# - 如何在 Visual Studio 中开发独特的 GUI?

C++ 在 { Token 之前无效使用不完整类型或预期初始化程序

r - 观察另一个模块中的事件

java - Android JNI native C 函数调用杀死 Activity

c - 在新窗口中从 GTKEntry 获取整数

c++ - Gtkmm:创建一个列出 Gtk::DrawingArea 的 Gtk::ComboBox

c - 从指针数组中读取字符串

c - 如何知道我的程序速度,代码的哪些部分是瓶颈?

c - 从 C 代码理解 x86 汇编代码