C에서 GTK를 사용하고 있으며 사용자로부터 입력을 수집하기 위해 양식을 만들고 싶습니다. 나는 사용자의 입력을 수집하기 위해 GTK_ENTRY를 사용한다.GTK : 사용자 입력 대기
불행히도 나는 사용자가 입력을 입력하고 입력 준비가 완료되는대로 다시 시작하기를 기다리기 위해 실행을 어떻게 넣을 수 있는지 모르겠다.
제발 도와 주시겠습니까?
감사
C에서 GTK를 사용하고 있으며 사용자로부터 입력을 수집하기 위해 양식을 만들고 싶습니다. 나는 사용자의 입력을 수집하기 위해 GTK_ENTRY를 사용한다.GTK : 사용자 입력 대기
불행히도 나는 사용자가 입력을 입력하고 입력 준비가 완료되는대로 다시 시작하기를 기다리기 위해 실행을 어떻게 넣을 수 있는지 모르겠다.
제발 도와 주시겠습니까?
감사
#include <gtk/gtk.h>
static void on_button_clicked(GtkButton *button,gpointer data);
static void on_entry_activate(GtkEntry *entry,gpointer data);
int main(int argc, char *argv[])
{
GtkWidget *window;
GtkWidget *entry;
GtkWidget *button;
GtkWidget *hbox;
gtk_init(&argc,&argv);
window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(window),"entry");
gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
gtk_container_set_border_width(GTK_CONTAINER(window),5);
hbox=gtk_box_new(GTK_ORIENTATION_HORIZONTAL,5);
gtk_container_add(GTK_CONTAINER(window),hbox);
entry=gtk_entry_new();
gtk_box_pack_start(GTK_BOX(hbox),entry,TRUE,TRUE,5);
button=gtk_button_new_with_label("Ok");
gtk_box_pack_start(GTK_BOX(hbox),button,FALSE,FALSE,0);
g_signal_connect(G_OBJECT(window),"destroy",
G_CALLBACK(gtk_main_quit),NULL);
g_signal_connect(G_OBJECT(button),"clicked",
G_CALLBACK(on_button_clicked),entry);
g_signal_connect(G_OBJECT(entry),"activate",/* when you press ENTER */
G_CALLBACK(on_entry_activate),NULL);
gtk_widget_show_all(window);
gtk_main();
return 0;
}
static void on_button_clicked(GtkButton *button,gpointer data)
{
GtkWidget *entry=(GtkWidget *)data;
GtkWidget *dialog;
gchar buff[1024];
g_snprintf(buff,1024,"You input '%s' !",
gtk_entry_get_text(GTK_ENTRY(entry)));
dialog=gtk_message_dialog_new(NULL,GTK_DIALOG_MODAL,
GTK_MESSAGE_INFO,GTK_BUTTONS_OK,"%s",buff);
gtk_dialog_run(GTK_DIALOG(dialog));
gtk_widget_destroy(dialog);
gtk_entry_set_text(GTK_ENTRY(entry),"");
}
static void on_entry_activate(GtkEntry *entry,gpointer data)
{
g_printf("%s\n",gtk_entry_get_text(GTK_ENTRY(entry)));
}
이 예는 매우 간단합니다. 입력에서 ENTER 키를 누르거나 확인을 클릭하면 입력 준비가 완료됩니다.
코드는 읽기 쉽습니다. 행운을 빕니다!
코드 주셔서 감사합니다! 비슷한 해결책을 제시 할 수는 있지만 여전히 누락 된 부분은 사용자 입력을 기다리고있는 코드의 일부입니다. 나는 더 명확하게하려고 노력할 것이다. 버튼을 눌러 함수를 실행하고 실행 중에 사용자 입력이 필요하다는 것을 이미지 해 봅시다. 실행을 "일시 중지"하고 사용자 항목을 기다리고 검색하려면 어떻게해야합니까? 감사합니다 – Giorgio
정확히 이해하지 못합니다. 사용자가 버튼을 누르면 입력 대화 상자에 사용자가 데이터를 입력 할 수 있도록 표시되어야합니까? – Wiky
사용자 입력은 어디에서 얻을 수 있습니까? 기존 GtkEntry 또는 새로운 GtkEntry? 새로운 GtkEntry, 아마도 GtkDialog가 도움이 될 수 있다면 – Wiky
'시스템 ("일시 중지")'시도, 대부분의 사람들이 그것을 좋아한다는 것을 알고 있지만 어쩌면 그것은 당신을 위해 일할 것입니다. –
두 단어로 : 당신은하지 않습니다. 대신 이벤트 루프가 생기고 사용자가 폼을 닫을 때 ("확인"버튼 또는 "취소"버튼을 통해) 이벤트가 발생합니다. 귀하의 의견에 –
주셔서 감사합니다. 코드 예제를 공유 할 수 있습니까? 뮤텍스를 사용해도 루프를 사용하려고했지만 프로그램이 단순히 "정지"합니다. 감사합니다 – Giorgio