返回顶部
首页 > 资讯 > 后端开发 > Python >gtk3示例--buttonbox
  • 125
分享到

gtk3示例--buttonbox

示例buttonbox 2023-01-31 01:01:28 125人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

#include <gtk/gtk.h> static void print_hello (GtkWidget *widget, gpointer data) {     g_print

#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;
}
 

--结束END--

本文标题: gtk3示例--buttonbox

本文链接: https://lsjlt.com/news/183964.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • gtk3示例--buttonbox
    #include <gtk/gtk.h> static void print_hello (GtkWidget *widget, gpointer data) {     g_print...
    99+
    2023-01-31
    示例 buttonbox
  • SpringBoot结合ECharts案例演示示例
    目录一、提出任务二、完成任务(一)创建数据库与表(二)创建Spring Boot项目(三)创建班级实体类(四)创建班级映射器接口(五)创建班级映射器配置文件(六)创建班级服务类(七)...
    99+
    2024-04-02
  • Python Thrift示例
    Apache Thrift 是 Facebook 实现的一种高效的、支持多种编程语言的远程服务调用的框架。本文将从 Python开发人员角度简单介绍 Apache Thrift 的架构、开发和使用。 Thrift networ...
    99+
    2023-01-31
    示例 Python Thrift
  • ReactNativePopup实现示例
    目录具体实现使用方法React Native 官方提供了 Modal 组件,但 Modal 是属于全屏的弹出层,当 Modal 显示时,操作区域只有 Modal 里的元素,而且焦点会...
    99+
    2024-04-02
  • JNI开发示例
    小编给大家分享一下JNI开发示例,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!案例1:Native项目如果开发者们只是想做简单的Native开发,并非为第三方提供...
    99+
    2023-06-14
  • matplotlib简单示例
    一、简介 以下引用自百度百科 Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形 。 通过 Matplotlib,开发者可以仅需要几行代码,便可以生成绘图,直方图,功...
    99+
    2023-01-30
    示例 简单 matplotlib
  • python绘图示例
    直方图、PDF图、CDF图 直方图 画直方图可以参考Python 中用 matplotlib 绘制直方图(histograms)。另外,plot.ly也提供了画直方图的多种方式。 直方图+PDF图+CDF图 参见kernel...
    99+
    2023-01-31
    示例 python
  • vue3diff算法示例
    目录一、可能性(常见):二、找规律三、算法优化最长的递增子序列完整代码一、可能性(常见): 1. 旧的:a b c新的:a b c d 2. 旧的:  a b c新的:d ...
    99+
    2024-04-02
  • Function.prototype.bind用法示例
    复制代码 代码如下: //ECMAScript 5 Function.prototype.bind函数兼容处理 (function(){ if ( !Function.prototy...
    99+
    2022-11-15
    Function prototype bind
  • Elasticsearch配置文件示例示范
    目录一 前言二 elasticsearch.yml2.1 Cluster2.2 Node2.3 Paths2.4 Network2.5 Discovery2.6 Memory2.7 ...
    99+
    2024-04-02
  • Vue大屏数据展示示例
    高效实现需求,避免臃肿的组件库和重复造轮子,前段时间做了很多大屏展示类的项目,今天来跟大家分享一下,大屏的实践过程,最开始我是使用了dataview 这个组件库,然后发现是自己并不需...
    99+
    2024-04-02
  • MySQL实例crash的示例分析
    这篇文章主要介绍MySQL实例crash的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!【问题描述】我们生产环境有一组集群的多台MySQL服务器(MySQL 5.6.21),...
    99+
    2024-04-02
  • Bootstrap中警示框的示例分析
    小编给大家分享一下Bootstrap中警示框的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在网站中,网页总是需要和用户...
    99+
    2024-04-02
  • Pygame显示文字的实现示例
    目录1 Pygame的初始化2 屏幕的创建3 字体的创建4 字体的渲染5 文字的显示使用Pygame显示文字的步骤如图1所示。 图1 显示文字的步骤 1 Pygame的初始化 通过...
    99+
    2023-02-14
    Pygame显示文字 Pygame显示
  • Js经典案例的示例分析
    这篇文章将为大家详细讲解有关Js经典案例的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体如下:鼠标悬停切换图片:<html> <head&g...
    99+
    2024-04-02
  • java中class实例的示例分析
    这篇文章将为大家详细讲解有关java中class实例的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1、结构说明(1)class:外部类,成员(成员内部类,静态内部类),局部内部类,匿名内部类(2...
    99+
    2023-06-15
  • C#单例模式的示例分析
    这篇文章给大家分享的是有关C#单例模式的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。单例模式也是创建型模式的一种,也是23种设计模式中比较简单的一种。见名思意,在整个软件系统中,只有某个类型的一个对象,...
    99+
    2023-06-29
  • java单例模式的示例分析
    这篇文章主要介绍了java单例模式的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。定义:      &nb...
    99+
    2023-05-30
    java
  • SQL JOIN用法示例
    现在有两张表,第一张表有学生姓名,语文,数学,英语成绩,数据量46万。第二张表有学生姓名,物理,化学,政治成绩,数据量10万。 找出既参加了table1,也参加了table2的考试的学生的数学和物理成绩: SELECT...
    99+
    2017-05-28
    SQL JOIN用法示例
  • Mysql示例数据库
    官方提供了多个示例数据库: 下载地址: https://dev.mysql.com/doc/index-other.html github示例数据库: 下载地址:https://github.com...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作