前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >gtk3示例--buttonbox

gtk3示例--buttonbox

作者头像
py3study
发布2020-01-14 14:30:08
9250
发布2020-01-14 14:30:08
举报
文章被收录于专栏:python3python3
代码语言:javascript
复制
#include <gtk/gtk.h>
 
 static void
 print_hello (GtkWidget *widget, gpointer data)
 {
     g_print("你按的是确定键\n");
 }
 
 static void
 print_cancel (GtkWidget *widget, gpointer data)
 {
     g_print("你按的是取消键\n");
 }
 
 static void
 print_help (GtkWidget *widget, gpointer data)
 {
     g_print ("你按的是帮助键\n");
 }
 
 static GtkWidget *
 create_bbox (gint  horizontal,
              char *title,
              gint  spacing,
              gint  layout)
 {
   GtkWidget *frame;
   GtkWidget *bbox;
   GtkWidget *button;
 
   frame = gtk_frame_new (title);
 
   if (horizontal)
     bbox = gtk_button_box_new (GTK_ORIENTATION_HORIZONTAL);
   else
     bbox = gtk_button_box_new (GTK_ORIENTATION_VERTICAL);
 
   gtk_container_set_border_width (GTK_CONTAINER (bbox), 5);
   gtk_container_add (GTK_CONTAINER (frame), bbox);
 
   gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox), layout);
   gtk_box_set_spacing (GTK_BOX (bbox), spacing);
 
   button = gtk_button_new_from_stock (GTK_STOCK_OK);
   g_signal_connect (button, "clicked", G_CALLBACK(print_hello), NULL);
   gtk_container_add (GTK_CONTAINER (bbox), button);
 
   button = gtk_button_new_from_stock (GTK_STOCK_CANCEL);
   g_signal_connect (button, "clicked", G_CALLBACK(print_cancel), NULL);
   gtk_container_add (GTK_CONTAINER (bbox), button);
 
   button = gtk_button_new_from_stock (GTK_STOCK_HELP);
   g_signal_connect (button, "clicked", G_CALLBACK(print_help), NULL);
   gtk_container_add (GTK_CONTAINER (bbox), button);
 
   return frame;
 }
 
 GtkWidget *
 do_button_box (GtkWidget *do_widget)
 {
   static GtkWidget *window = NULL;
   GtkWidget *main_vbox;
   GtkWidget *vbox;
   GtkWidget *hbox;
   GtkWidget *frame_horz;
   GtkWidget *frame_vert;
 
   if (!window)
   {
     window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
     gtk_window_set_screen (GTK_WINDOW (window),
                            gtk_widget_get_screen (do_widget));
     gtk_window_set_title (GTK_WINDOW (window), "Button Boxes");
 
     g_signal_connect (window, "destroy",
                       G_CALLBACK (gtk_widget_destroyed),
                       &window);
 
     gtk_container_set_border_width (GTK_CONTAINER (window), 10);
 
     main_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
     gtk_container_add (GTK_CONTAINER (window), main_vbox);
 
     frame_horz = gtk_frame_new ("Horizontal Button Boxes");
     gtk_box_pack_start (GTK_BOX (main_vbox), frame_horz, TRUE, TRUE, 10);
 
     vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
     gtk_container_set_border_width (GTK_CONTAINER (vbox), 10);
     gtk_container_add (GTK_CONTAINER (frame_horz), vbox);
 
     gtk_box_pack_start (GTK_BOX (vbox),
                         create_bbox (TRUE, "Spread", 40, GTK_BUTTONBOX_SPREAD),
                         TRUE, TRUE, 0);
 
     gtk_box_pack_start (GTK_BOX (vbox),
                         create_bbox (TRUE, "Edge", 40, GTK_BUTTONBOX_EDGE),
                         TRUE, TRUE, 5);
 
     gtk_box_pack_start (GTK_BOX (vbox),
                         create_bbox (TRUE, "Start", 40, GTK_BUTTONBOX_START),
                         TRUE, TRUE, 5);
 
     gtk_box_pack_start (GTK_BOX (vbox),
                         create_bbox (TRUE, "End", 40, GTK_BUTTONBOX_END),
                         TRUE, TRUE, 5);
 
     frame_vert = gtk_frame_new ("Vertical Button Boxes");
     gtk_box_pack_start (GTK_BOX (main_vbox), frame_vert, TRUE, TRUE, 10);
 
     hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
     gtk_container_set_border_width (GTK_CONTAINER (hbox), 10);
     gtk_container_add (GTK_CONTAINER (frame_vert), hbox);
 
     gtk_box_pack_start (GTK_BOX (hbox),
                         create_bbox (FALSE, "Spread", 30, GTK_BUTTONBOX_SPREAD),
                         TRUE, TRUE, 0);
 
     gtk_box_pack_start (GTK_BOX (hbox),
                         create_bbox (FALSE, "Edge", 30, GTK_BUTTONBOX_EDGE),
                         TRUE, TRUE, 5);
 
     gtk_box_pack_start (GTK_BOX (hbox),
                         create_bbox (FALSE, "Start", 30, GTK_BUTTONBOX_START),
                         TRUE, TRUE, 5);
 
     gtk_box_pack_start (GTK_BOX (hbox),
                         create_bbox (FALSE, "End", 30, GTK_BUTTONBOX_END),
                         TRUE, TRUE, 5);
   }
 
   if (!gtk_widget_get_visible (window))
     {
       gtk_widget_show_all (window);
     }
   else
     {
       gtk_widget_destroy (window);
       window = NULL;
     }
 
   return window;
 }
 
 
 int
 main(int argc, char **argv)
 {
     GtkWidget *do_window = NULL;
     gtk_init(&argc, &argv);
     do_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
     do_window = do_button_box (do_window);
     g_signal_connect(GTK_WINDOW(do_window), "destroy",  gtk_main_quit, NULL );
 
     //gtk_widget_show(do_window);
     gtk_main();
     return 0;
 }
 
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-07-15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档