我想更新按键事件的文本条目。
我的场景没有键盘,所以我以编程方式生成它并尝试从按键事件处理程序更新文本条目。
每次按键时,我都需要更新GTK窗口中的文本条目。我怎样才能做到这一点?我试过
gtk_entry_set_text (GTK_ENTRY (entry1), buffer);
但是它给出了一个分割错误。
我将从其他一些用户线程获取数据,我需要用新数据更新文本条目,并用更新的文本条目显示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();
}
您从未从GtkBuilder中分配entry1
变量,因此entry1
在发出信号时仍然是NULL
,并且程序崩溃。你这样做是为了window
;对于CCD_ 5这样做是类似的。