GTK主题教程

合集下载

glade3开发gtk程序入门教程

glade3开发gtk程序入门教程

glade3开发gtk程序入门教程2009-11-29 01:24Gnome下已开发出了Glade这一应用软件,它是传统界面设计工具Gtk/Gdk的扩展,能满足基于Gtk+库的图形用户界面可视化开发的基本需求。

一、Glade简介如果有一种软件能将图形界面的设计及时地展现于开发人员的面前,而且在设计完后能直接看到界面的外观效果,这样就使程序员的主要精力集中于应用程序核心功能的开发上,这就是所谓的可视化编程思想。

在Windows环境下,这种可视化的集成开发环境已有许多成熟的产品,如VC++、VB、PB、Delphi、C++Bulider等。

基于Linux 操作系统的软件并不丰富,但绝非一片空白,例如Borland公司推出的Kylix。

目前Gnome下已开发出了Glade这一应用软件,它是传统界面设计工具Gtk/Gdk的扩展,能满足基于Gtk+库的图形用户界面可视化开发的基本需求。

Glade可为你生成界面代码,基本过程如下:1.让Glade设计出界面元素,设置界面元素属性,为构件的信号设置回调函数;2.将其存为XML格式,观察并修改不符合要求的部分;3.编写应用其它部分代码,并在应用中载入Glade文件,编译C代码生成执行文件。

这种模式使设计界面与其它部分代码完全分开,并且有可能做到在对界面进行改动后不必对应用进行编译。

图形用户界面设计小组可不必关心应用程序的运行细节,同时编程人员也可以把他们的时间用于其它方面,而不需为界面的修改重复编写大量烦琐的Gtk+函数。

这种分工开发的形式符合软件工程的要求,对GUI 软件的开发也更方便。

二、使用Glade的预备条件在学习使用Glade之前,我们假设你已对Linux操作系统的基本运用有初步了解、熟悉rpm 包或gzip包的处理命令、对C语言有一定的了解,并熟悉消息处理编程机制。

以上基础是使用Glade的必备知识,如果读者在以上某些方面尚存不明之处可先查阅相关资料。

2024年傅老师GTK简易教程

2024年傅老师GTK简易教程
傅老師GTK簡易教程
2024/2/29
1
目录
• GTK基础概念 • GTK环境搭建 • GTK界面设计 • GTK图形绘制 • GTK数据存储与处理 • GTK高级特性
2024/2/29
2
01
GTK基础概念
2024/2/29
3
GTK定义及作用
2024/2/29
GTK(GIMP Toolkit)是一个 开源的、跨平台的、用于创建
06
在macOS系统中,可以使用Homebrew等包管理器安装 GTK+开发环境。
8
第一个GTK程序
• 创建一个C语言源文件,例如hello.c,并 输入以下代码
2024/2/29
9
第一个GTK程序
```c
include <gtk/gtk.h>
2024/2/29
int main(int argc, char *argv[]) {
10
第一个GTK程序
GtkWidget *window;
gtk_init(&argc, &argv);
2024/2/29
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
11
第一个GTK程序
• gtk_widget_show(window);
2024/2/29
支持本地化资源文件,如翻译后的字符串、图 片等,方便开发者进行本地化开发。
2024/2/29
双向文本支持
支持双向文本排版,满足阿拉伯语、希伯来语等从右到左书写语言的需求。
34
THANKS
感谢观看
2024/2/29
35

gtk3 css 和 ui文件用法

gtk3 css 和 ui文件用法

标题:GTK3 CSS和UI文件用法一、简介GTK是一种跨评台的图形用户界面工具包,它提供了一种在不同操作系统(如Linux、Windows、Mac等)下创建图形用户界面的统一方法。

GTK3是GTK的第三个主要版本,它引入了一些新特性并修复了一些旧版本的问题。

其中,GTK3 CSS和UI文件用法为开发人员提供了一种灵活且易于维护的方式来定义和设计用户界面。

二、GTK3 CSS文件1. 概述CSS(Cascading Style Sheets)是一种样式表语言,用于描述文档的呈现。

在GTK3中,CSS文件用于定义用户界面元素的外观和样式,例如按钮的颜色、标签的字体等。

通过使用CSS文件,开发人员可以轻松地定制界面的外观,而无需深入了解GTK3的内部工作机制。

2. 使用方法在GTK3应用程序中使用CSS文件非常简单。

开发人员只需在UI文件中通过引入CSS文件的方式,即可实现对界面样式的定制。

例如:```xml<interface><requires lib="gtk+" version="3.20"/><object class="GtkWindow"><property name="title">GTK3 CSS示例</property><property name="default-width">200</property><property name="default-height">200</property><child><object class="GtkButton" id="button"><property name="label">点击我</property></object></child></object><stylesheet><data><![CDATA[#button {background-color: #3498db;color: #fff;}]]></data></stylesheet></interface>```在上述代码中,`<stylesheet>`标签用于引入CSS样式,通过CSS选择器`#button`来定义按钮的背景颜色和文本颜色。

libgtkGtk窗口,控件,设置(添加图片等)

libgtkGtk窗口,控件,设置(添加图片等)

libgtkGtk窗⼝,控件,设置(添加图⽚等){ //本⽂参与,欢迎正在阅读的你也加⼊,⼀起分享。

}{1、关于窗⼝1 // 创建顶层窗体,后⾯有POPUP的2 GtkWidget *main_window;3 main_window = gtk_window_new (GTK_WINDOW_TOPLEVEL);45 // 设置title⽂字,注意UTF8格式的⽂字转换,否则是乱码6 gtk_window_set_title (GTK_WINDOW (main_window), g_locale_to_utf8("哈哈",-1,NULL,NULL,NULL));78 // 设置窗体图标,⽤这条语句使所有窗体使⽤同⼀个图标,也有独⽴设置(GTK⼿册)9 gtk_window_set_default_icon_from_file( ICON_WNDICON, NULL);1011 // 设置边框宽度,基本随意12 gtk_container_set_border_width (GTK_CONTAINER (main_window), 8);1314 // 设置模式窗⼝15 gtk_window_set_modal(GTK_WINDOW (window), TRUE);1617 // 让窗⼝总在最前18 gtk_window_set_keep_above(GTK_WINDOW (window), TRUE);1920 // 移动窗⼝位置21 gtk_window_move(GTK_WINDOW (window), left, top);22 // 也是设置位置的,简单点23 gtk_window_set_position(GTK_WINDOW (main_window), GTK_WIN_POS_CENTER);2425 // 这个让叉叉⽆效26 gtk_window_set_deletable(GTK_WINDOW (main_window), FALSE);设置全屏显⽰的⼏种办法:1 //a)简单⼀点就⽤这个。

GTK+ 2.0 教程

GTK+ 2.0 教程

GTK+ 2.0 教程版本号:V_0.1.0 2002年6月25日本文是有关通过 C 语言接口使用GTK (the GIMP Toolkit) 的教程。

Table of Contents中文版说明简介 (4)从这里开始 (4)用 GTK 来写 Hello World编译 Hello World 程序信号和回调函数的原理事件Hello World 详解继续 (12)数据类型深入探索信号处理函数改进了的 Hello World组装构件 (14)组装盒的原理盒的细节组装示范程序用表组装表组装示例构件概述 (23)类型转换构件的组织无窗口构件按钮构件 (26)一般按钮 Normal Buttons开关按钮 Toggle Buttons复选按钮 Check Buttons单选按钮 Radio Buttons调整对象Adjustments ………………………………………………………………………………………………………………31创建一个调整对象轻松使用调整对象“调整对象”的内部机制范围构件Range Widgets ……………………………………………………………………………………………………………33滚动条构件 Scrollbar Widgets比例构件 Scale Widgets创建一个比例构件函数和信号 ( 至少讲了函数 )常用的范围函数设置更新方式获得和设置调整对象键盘和鼠标绑定示例杂项构件 (39)标签 Labels1箭头 Arrows工具提示对象 The Tooltips Objec t进度条 Progress Bars对话框 Dialogs标尺 Rulers状态栏 Statusbars文本输入构件 Text Entries微调按钮 Spin Buttons组合框 Combo Box日历 Calenda r颜色选择 Color Selection文件选择 File Selections容器构件Container Widgets ………………………………………………………………………………………………………76事件盒 The EventBox对齐构件 The Alignment widge t固定容器 Fixed Containe r布局容器 Layout Containe r框架 Frames比例框架 Aspect Frames分栏窗口构件 Paned Window Widgets视角 Viewports滚动窗口 Scrolled Windows按钮盒 Button Boxes工具栏 Toolba r笔记本 Notebooks菜单构件 (100)手工创建菜单手工菜单示例使用套件套件示例无文档构件 (106)快捷标签 Accel Labe l选项菜单 Option Menu菜单项 Menu Items复选菜单项 Check Menu Item单选菜单项 Radio Menu Item分隔菜单项 Separator Menu Item分离菜单项 Tearoff Menu Item曲线图 Curves绘图区 Drawing Area字体选择对话框 Font Selection Dialog消息对话框 Message DialogGamma 曲线图图像 Image插头和插座 Plugs and Sockets树视区 Tree View文本视区 Text View设置构件的属性超时、IO 和Idle 函数 (108)超时 Timeouts监控 IOIdle 函数高级事件和信号处理信号函数连接和断开信号处理函数2阻塞和反阻塞信号处理函数发出和停止信号信号的发射和传播操作选中区概述获取选中区信息提供选中区拖放概述属性函数设置源构件源构件上的信号设置目的构件目的构件上的信号GLib定义双向链表单向链表存储管理计时器字符串处理实用程序和错误处理函数GTK 的 rc 文件rc 文件的功能GTK rc 文件的格式rc 文件示例编写你自己的构件 (124)概述一个构件的剖析创建一个复合构件介绍选择一个父类头文件get_type() 函数class_init() 函数init() 函数其余的 .. .从头创建构件介绍在屏幕上显示构件表盘构件的原形主体gtk_dial_realize()大小磋商gtk_dial_expose()事件处理可能的增强深入的学习涂鸦板,一个简单的绘图程序 (141)概述事件处理绘图区构件和绘图添加 XInpu t 支持允许扩展设备信息使用扩展设备信息得到更多关于设备的信息进一步的讲解编写GTK 应用程序的技巧 (151)3简介GTK (GIMP Toolkit) 是一套用于创建图形用户界面的工具包。

GTK+ 图形界面程式设计快速入门

GTK+ 图形界面程式设计快速入门

GtkTextView
GtkStatusBar
事件驱动 (EventDriven)
图形介面程式一大特色,和传统程式相当不同 使用者对程式做出某种操作,例如按下按钮,或选单中 的项目,会产生一个「事件」 ( 使用者做了某一件事 ) 此时程式会收到讯息通知有事发生,并且要根据发生的 事件,来判断该执行什麼动作,并且给使用者适当回应 没有事情发生时,程式就处於闲置状态等待新事件
POP3 通讯协定简介 (RFC1939)
POP3=PostOfficeProtocolVersion3 基本邮件通讯协定指令: ●USER: 输入帐号 ●PASS: 输入密码 ●STAT: 查询信箱状态,有几封信 ●LIST: 列出所有信件 ●RETR: 下载信件 ●QUIT: 结束 每行指令送出时,结尾需加上 CRLF 换行 指令执行成功主机会传回 +OK ,失败传回 ERR 参考资料: ftp:///innotes/rfc1939.txt
缺点?
学习曲线相当陡峭,对初学者极不友善 程式码相当冗长 架构过於复杂 文件相对缺乏,且不易查询 快速开发工具的支援,相当原始 使用 C 语言硬干物件导向,使用大量的 Macro , 造成可读性下降,较不直觉,且 typesafety 差, 比较不易维护和除错 记忆体消耗和执行效率还有不少改善空间 缺乏良好的整合开发环境 (IDE)
为何选用 GTK+
应用广泛,容易取得,大多平台都有 开放原始码 (LGPL) 架构完整严谨,高度弹性 物件导向 多国语言支援完整,跨平台,动态的介面 相对较为轻巧快速 ( 比起 Qt... 等 ) 纯 C 语言撰写,有多种 languagebinding 有快速建立图形介面的工具 (Glade+libglade) 有各种漂亮的 theme 其他 ....

gtk简易教程

gtk简易教程

大家一起用gtk编程1(开始与热身)转贴请注明出处:作者:lvjinhua@2006.09.20∙写在最前面笔者写做本文的目的,主要是为初学GTK编程的新手们提供一个能够快速上手的学习档案,能够通过自己将所有的代码输入并编译,以达到学习的目的。

同时,也希望它成为一个参考手册,希望GTK中的每一个API都能在本文中找到相应的示例。

笔者将尽力保证所有的代码都是最短小的,这样才能保证大家都有足够的动力去手工输入它。

由于笔者时间及精力有限,不能一次将所有内容呈现给所有读者,因此拟定了一个计划:每天更新一个章节的内容,在笔者的Blog上进行连载,同时会不断地对以前的内容进行修改和完善,因此为了保证大家能够读到最新的内容,请随时关注笔者的Blog:起笔的日子:2006.09.20∙为什么是GTK?为什么不是GTK?笔者不想花费太多的口水去辨证为什么选择GTK而不是其它的东西;任何技术都没有好坏之分,只有使用它的人有能力的强弱之别;笔者认为比较明智的做法是:多编些程序,少做些争论。

∙1、GTK简介GTK (GIMP Toolkit) 是一套用于创建图形用户界面的工具包。

它遵循 LGPL 许可证,所以可以用它来开发开源软件、自由软件,甚至是封闭源代码的商业软件,而不用花费任何费用来购买许可证和使用权。

当前,GTK已经被成功地应用到了大量的自由软件及商业软件中,已经取得了很大的成功。

GTK 的创建者:Peter Mattis: petm@Spencer Kimball: spencer@Josh MacDonald: jmacd@当前,GTK主要由几大组件构成:*Gtk+:GTK的主要构件,包括所有的图形控件及大量实用的API。

*Glib:包含一些标准函数的替代函数,以及一些处理链表等数据结构的函数等。

这些替代函数被用来增强GTK 的可移植性,同时提供 libc 的对应函数的增强版本。

*Pango:该组件用来处理国际化文字输出。

GTK主题创作指南

GTK主题创作指南

GTK主题创作指南author: Tim Orford date: Jan 06作者: Tim Orford日期: Jan 06 Contents内容introduction简介general widget properties一般部件性能gtkrc files gtkrc文件widget examples小工具的例子fonts字体key bindings键绑定engines发动机icons图标cursors游标further reading进一步阅读introduction:简介:Gtk programmers will tell you that writing a gtk theme is easy. gtk的程序员会告诉你,写一个GTK主题是容易的。

If you have a full understanding of how gtk is put together, then that may be so, but if you dont have an intimate knowledge of the gtk api and you want to change the visual appearance of your gtk apps then this document may hopefully save you some swearing while you go through the process of trial and error trying to figure out what works and what doesnt.如果你有一个这么全面了解了GTK是放在一起,那么这可能,但如果你没有一个熟悉的GTK的API的,你要改变你的GTK应用程序外观特征那么这个文件可能希望为您节省一些脏话,而你经过审讯过程中的错误,并试图找出什么可行,什么doesn't。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
接下来,我们就接着讲主题文件的内容吧,先从最主要的 gtk-widgets.css 讲起吧
主题开始一般都是定义所有类最基本的一些元素,(其中的一些定义我也只 搞懂其中几个而已,所以这里就不深讲了)下面就是主要内容了:
代码注释的做法
主题中的代码你会发现有很多的标题分段,这样做的理由和引用外文件的做 法一样都是为了便于管理和修改还有别人阅读代码。
Color: #ffffff; /* 白色的代码为#ffffff {#后面的数值分别代表 R(红色 red)G(绿色 green) B(蓝色 blue)的 16 进制值,00 代表没有,ff 自然是最大。}*/ 但是你会看到一般主题代码里出现的一些颜色定义值都是些宏定义,比如
Color: @theme_fg_color; /*theme foreground color(主题前景色)*/ ( 或者: Color: white; /* white,black,yellow 等都是一些系统的宏定义颜色值, 这是 linux 系统中固定的 ,注意:transparent 表示透明 ) 所义这里就可以一瞥宏定义的好处了,你只需要修改 gtk.css 里的宏定义颜色值 就可以改变整个主题的颜色,而不需要一个一个的修改。
或许大家有些许疑惑,既然 gtk.css 才是主题的配置文件,那其他的 css 文 件都是干什么的,这个我等会和大家说明吧!一步一步来,咱先看看 gtk.css 的 内容吧:
纳尼!就这么点儿!这不基本上啥也没有嘛!其实并不是啥也没有,很多主 题的制作的者为了使主题代码的结构清晰,也为了便于后期的修改和维护,都不 会把所有的主题代码一股脑的塞进 gtk.css 这一个文件里的。通常主题制作者都 会采取引用外配置文件的做法,对!没有错,gtk.css 里的这一条代码就是引用 其他的 css 文件的作法,一般都是@import 加上 url(”其它的 css 文件的文 件名“),所以大家应该就知道除 gtk.css 之外 gtk-main.css 是怎么来的了吧! (引用其它的 css 文件时文件名都是可以自定义的,只要引用的时候名字别写错 就行,而被引用文件的默认目录就是 gtk3 主题的根目录。)
关于 border 边框(或者描边)的有: Border-style: 边框样式; Border-color: 边框颜色; Boder-image: 边框图像; Border-radius: 圆角边框的圆角半径(像素为单位); Box-shadow: 边框阴影; 还有一些效果如: Text-shadow: 文字阴影; Transition: 颜色过渡效果(可用来制作一些动感效果); Animation: 动画效果; 等等。。。
其它的文件在不同的主题中或许会少见一些,但上述的两个文件基本上所 有的主题中都可以看到(估计是 gtk 主题的传统吧,都约定俗成了!主要是 gnome3 的默认主题 Adwaita 就是这样的)
对了,在此特别说明一下:gnome3 桌面很多程序会默认使用暗主题也就 是 Dark 主题,而这种情况下主题默认检索的主题文件就不是 gtk.css 了。而是 gtk-dark.css,如果这个文件没有才会默认使用 gtk.css 的。所以 gtk-dark.css 可以没有但也很重要(也就是说你可以不给桌面做暗主题,统一主题。但暗主题 的存在也是可以丰富桌面的显示风格的)
如图:
看到这么多 css 文件,大家可别慌哦!其实 gtk3 主题默认必须有的文件就 两个:一个是 settings.ini(主题引擎的配置文件,作用我不是特别清楚,一般 都不管它。但$HOME/.config/gtk-3.0/settings.ini 作用却比较到哦!: ~/.config/gtk-3.0/settings.ini [Settings] gtk-theme-name = Adwaita #设置默认主题 gtk-application-prefer-dark-theme = true #设置程序默认使用暗主题 gtk-font-name = Sans 10 #设置默认字体和大小),另一个就是 gtk.css(这 个就是 gtk3 主题的配置文件了)
但个人更喜欢将分段的代码写到外引用的文件中,这样更便于管理和测试主 题。
大家可以看看我的另一个主题 Vimix-Dark:
将主题中定义不同部件和 gtk 类的代码都分别放不同外置文件里,比如: 关于 unity 窗口管理器和 unity 栏的代码放 unity.css 文件里,关于按钮的代码 的代码放 button.css 里,关于菜单的代码放 menu.css 里,关于链接按钮的代 码放 link-button.css 里,等等。。。
内容写到 gtk-widgets.css 里,所以一般情况下这个文件会比较大一些,因为它 占了大部分的内容。而 gtk-widgets-assets.css 一般都是定义一些主题中需要 用到的背景图片的内容,所以在这个文件里你会看到基本上都是一些引用图片的 代码(至于怎么引用图片嘛!会 css 的自然不需我多说,不懂 css 代码的后面我 会详细的为你讲解,到时候你就会发现原来 css 代码真的是简单到爆啊!)
。。。。。。
红色的部分是必须的,index.theme 这个文件一般也不能缺少。紫色和绿 色部分是窗口管理器的主题,一个完整的桌面主题里也是不可缺少的。而蓝色部 分是桌面环境的主题(如 gnome-shell 的顶栏和 cinnamon 的底栏) 。
下面贴一张主题文件夹的截图吧:
由于个人能力有限,所以在这篇教程里我就主要介绍介绍 gtk3 主题吧!其 他的如 cinnamon、gnome-shell、openbox 等个人没怎么使用过,所以也没 深入研究,即便想在此介绍也心有余而力不足!(gtk3 主题我也只是略懂皮毛而 已!)
4.gtk3 主题的 css3 代码
先从一些基本和常见的 gtk 控件讲起吧!比如说 button(按钮), 先打开我 Vimix-dark 里的 button.css 看看:
Css3 代码的结构一般都是 .“类名”{ ”代码“} 大括号之前是代码起作用的控件的 gtk 类名然后大括号里是 css 的样式内 容,不同的样式用分号隔开,分行显示。 一般在 css 里常用的样式和用法有: Color: 前景颜色; Background-color: 背景颜色; Background-image: 背景图像(图片或渐变); Padding: 背景填充;
把外置的文件都置于一个文件夹 widgets 里(这个可以自己自定义,很多 主题都喜欢放 apps 文件夹了,个人命名为 widgets 觉得更贴切,毕竟是从 gtk-widgets.css 文件里分离出来的。)
现在,gtk3 主题的大体结构已经讲得差不多了,接下来就讲讲 gtk3 主题里 css3 代码的写法吧:
GTK 主题目录
Gtk 主题的默认目录一般有两个---“系统目录”和“用户目录”,系统目 录是在/usr/share/themes 下,这个目录是系统所有用户都可以共用的主题目 录,这也是主题安装包的安装目录。而“用户目录”是在$HOME/.themes 下, “$HOME”的意思是指用户根目录。比如用户”Mike“,那”Mike“的用户 根目录就是/home/Mike,那么”Mike“的用户主题目录就是 /home/Mike/.themes,然而用户根目录下的这个.themes 隐藏文件夹默认情 况下是没有的,所以一般都需要自己新建。
2. GTK 主题结构
Gtk 主题结构一般如下图所示:
”主题名“
/Index.theme (主题定义和介绍文件) /gtk-2.0/ (gtk2 主题文件夹) /gtk-3.0/ (gtk3 主题文件夹) /metacity-1/ (gnome 默认窗口管理器主题文件夹) /unity/ (ubuntu 的窗口管理器主题文件夹) /gnome-shell/ (gnome-shell 主题文件夹) /cinnamon/ (linux-mint 的 cinamon 主题文件夹) /xfwm4/ (xfce4 的窗口管理器主题文件夹) /openbox-3/(openbox 的窗口管理器的主题文件夹)
2. Color: alpha(@theme_fg_color, 0.50); /* alpha 的作用是修改颜色的 alpha 值也就是透明度,0.5 的话就是 50%的透 明 */
3. Color: mix(@menu_fg_color, @menu_bg_color, 0.50); /* mix 的作用是将两个颜色混合,这个目前我还不是很懂,后面的数值作用的 是哪个量我还不是很清楚,各位网页大神们肯定知道! */ 其他的颜色样式的用法都一致,不管是 background-color 还是 boder-color。
知道这些之后我们再打开 gtk-main.css 看看里面是些什么东东吧! (貌似 几乎所有的主题 gtk.css 引用外文件时都取名为 gtk-main.css,估计是因为很多 的主题都是基于 gnome3 桌面的默认主题开发的原因吧!)
开头部分都是些@define-color 加个名字再加个颜色 16 进制值,都是些啥 呢?其实这些都是些宏定义或者怎么说呢?:变量的定义(个人对编程什么的不 是很了解,说得不是很到位还希望各位大神见谅!)
这些代码都是定义一些后面配置文件中需要用用到的颜色值,中间的颜色名 称自然也是自定义的(但看了这么多主题文件了,取的那些个颜色名几乎都是大 同小异,不过这样也好,修改起引用的外 css 文件:
(现在明白为什么主题目录里这么多的 css 文件了吧!) 这里需要说明一下,一般情况下几乎所有的主题都喜比我讲得要详细得 多,也比我专业得我。(我一个门外汉在代码方面就不在这里班门弄斧了)
关于用法的话,那几个主要的样式我就一个一个都讲讲最基本的知识吧,比 如颜色样式 color:
不管是 color,background-color 还是 boder-color 后面的用法都是接颜 色的 16 进制值,比如定义一个前景色为白色:
相关文档
最新文档