0
我想更新按鍵事件上的文本條目。以編程方式更新GTK文本條目
我的場景沒有鍵盤,所以我以編程方式生成 並嘗試從按鍵事件處理程序更新文本輸入。
在每個按鍵上,我需要更新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();
}
'gtk_entry_set_text'是正確的API。得到分段錯誤意味着entry1不是'GtkEntry *'實例或'buffer'不是NUL終止的字符串:這很簡單。 – ntd
請張貼代碼。 – andlabs
用代碼修改的問題。緩衝區是從另一個線程填充的 –