GTK文本条目以编程方式更新

时间:2015-05-29 07:22:42

标签: c gtk gtk2 gtkentry

我想更新按键事件的文字条目。

我的方案没有键盘,所以我以编程方式生成它  并尝试从keypress事件处理程序更新文本条目。

每按一次键,我需要更新GTK窗口中的文本条目。 我怎样才能做到这一点?我试过了

GtkEntry *entry1;

static gboolean kp_event_S1_1(GtkWidget *widget, GdkEventExpose *event, gpointer data)
{       
    printf(" - kp_event_S1_1 - \n");
    gtk_entry_set_text (GTK_ENTRY (entry1), buffer);
}


void S1_1(void )
{   
    GtkWidget *Win_1;
    GtkBuilder *builder;        
    builder = gtk_builder_new ();
    gtk_builder_add_from_file (builder, "/home/glade/glade1.glade", NULL);
    window = GTK_WIDGET (gtk_builder_get_object (builder, "Win_1"));
    g_signal_connect_swapped(G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit),NULL );
    g_signal_connect(G_OBJECT (window), "key_press_event", G_CALLBACK (kp_event_S1_1), NULL);
    gtk_widget_show_all(window);    
    gtk_main();
}

但它会产生分段错误。

我将从其他一些用户线程获取数据,我需要使用新数据更新文本条目并显示带有更新文本条目的gtk窗口。

以下是我的完整代码:

if($logged_in){
    //LOGGED IN MENU
}else{
    //NOT LOGGED IN MENU
}

1 个答案:

答案 0 :(得分:0)

您从未在GtkBuilder中分配entry1变量,因此信号发出时entry1仍为NULL,程序崩溃。你是为window做的;为entry1执行此操作是类似的。