컴퓨터 관련/Linux || Unix
GTK+ 버튼 클릭으로 콘솔에 문자열 출력
_BlankSpace
2017. 4. 23. 02:40
GTK의 시그널 처리를 이용하여 버튼을 누를 때마다 Console 창에 특정 문자열을 출력하는 방법을 소개하고자 한다.
Java에서 액션리스너를 사용하여, 간단하게 출력하는 것처럼 GTK도 간단하다.
그럼 다음 소스를 먼저 보자.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | #include <gtk/gtk.h> void button_clicked(GtkWidget *widget, gpointer data) { g_print("clicked\n"); } int main(int argc, char *argv[]) { GtkWidget *window; GtkWidget *halign; GtkWidget *btn; gtk_init(&argc, &argv); window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(window), "GtkButton"); gtk_window_set_default_size(GTK_WINDOW(window), 200, 150); gtk_container_set_border_width(GTK_CONTAINER(window), 15); gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER); halign = gtk_alignment_new(0, 0, 0, 0); btn = gtk_button_new_with_label("Click"); gtk_widget_set_size_request(btn, 70, 30); gtk_container_add(GTK_CONTAINER(halign), btn); gtk_container_add(GTK_CONTAINER(window), halign); g_signal_connect(G_OBJECT(btn), "clicked", G_CALLBACK(button_clicked), NULL); g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit), NULL); gtk_widget_show_all(window); gtk_main(); return 0; } | cs |
소스출처: http://zetcode.com/gui/gtk2/gtkevents/
실행화면은 다음과 같다.
다음과 같이 버튼을 누를 때마다 clicked 라는 특정 문자열이 출력된다.
1 2 3 4 5 | void button_clicked(GtkWidget* widget, gpointer data) { g_print("clicked\n"); } | cs |
1 | g_signal_connect(G_OBJECT(btn), "clicked", G_CALLBACK(button_clicked), NULL); | cs |
- 기본적인 signal을 등록하는 함수이다.
- 첫 번째 인자는 signal이 일어나는 widget이다.
- 두 번째 인자는 signal의 이벤트 종류이다.
- 버튼의 시그널 종류는 다음과 같다.
@ activate
@ clicked
@ enter
@ leave
@ pressed
@ released
1 2 3 4 5 | void button_clicked(GtkWidget* widget, gpointer data) { g_print("clicked\n"); } | cs |
- g_print()는 gtk에서 콘솔에 메시지를 출력하는 함수이다.
이상 글을 마무리 짓겠습니다.
저의 글에 공감이 되셨거나 도움이 되셨다면, 공감 버튼 한번 씩 꾸욱 눌러주시면 감사하겠습니다.
저에겐 큰 도움이 됩니다!