Linux程序设计 第10章 Linux的图形编程
- 格式:ppt
- 大小:1.91 MB
- 文档页数:40
Linux下的图形界面编程的实现黄 哲,陈 多Ξ(湖南工程学院计算机科学系,湖南湘潭411104) 摘 要:Linux下的图形界面编程一直是深受软件人员关注的一个问题,因其不具有Windows环境下图形界面开发的各种IDE工具.目前,Linux环境下,大部分图形界面程序都是用Gtk+实现的,文章介绍了Gtk+开发的基本思想,以及基于GKT工具包的图形开发工具G lade,详细叙述了基于Gtk+和G lade的布局方式、信号捕捉的实现,并列举了一个网络聊天室程序实例.关键词:Gtk;G lade;多线程中图分类号:TP31 文献标识码:A 文章编号:1671-119X(2006)01-0058-031 Gtk+2.0介绍1.1 Gtk+2.0的基本原理GT K+是L INU X平台下的X Window图形窗口编程工具,GT K+最初是由California大学Berke2 ley分校的两名学生Spencer K imball和Peter Mattis 开发而成的[1].GT K+从不完善渐渐地发展,到目前为止,成千上万的程序都己经使用GT K+来编写,这预示着GT K+在未来某个时候将得到广泛的应用.GT K+是一个图形用户编程工具,可以免费注册,所以用来开发自由软件或商业软件都不需要什么花费.现在很多L INU X集成系统都己经将GT K+打包进去了.包括RedHat Linux6.0以上版本,还有中文版的Turbo Linux等等.它也越来越被普遍地应用于UN IX系统编程.它为开发GIMP (GNU Image Manipulation Program,GNU图形操作程序)而研制的一套图形界面库,在功能上类似于微软的MFC库,就是为应用软件提供一套平台无关的,简单易用的图形界面接口.它几乎包括所有基本的图形界面元素,如窗口,按钮,列表,滚动条等等.GT K+软件层次:GT K+G D Kglib XL INUX下的C语言软件层次的最底层是L INU X下的C语言基础[2],其它的层次都是基于C语言,可以说GT K+就是C语言在L INU X下的一种扩展,它易学易用,不用关心硬件层的实现,对于编写新手是一门不错的“C语言”.G lib是GT K+,G D K使用的C函数,宏和结构的库,包含内存分配,字符串格式,时间与日期,I/O,定时函数,也包括链接表,数组,HASH 表,队列和缓存的工具函数.X是用来控制显示的底层图形函数库,包括所有窗口函数,有显示窗口和回应鼠标的函数.G D K是为了方便程序员使用而简化X函数的函数库.2002年三月一十一日,GT K+2.0版正式发布,开发者们自豪地宣称“GT K+2.0标志着自由软件领域的图形界面开发工具走向成熟”. 1.2 Gtk+2.0的布局对GT K显示格式的控制是通常通过打包盒子来完成的.widget组件打包可以采用两种方式,水平盒子和垂直盒子.若将widget组件打包进平行盒子,组件就被依次水平的插入窗口;若是垂直盒子,则组件排列是垂直的.产生新的水平盒子的函数为GtkWidget3gtk hbox new(gint homoge2 neous,gint spacing);参数homogeneous是用来控制是否盒子中的每个组件都有同样的大小(例如水平盒子中的控件有同样的宽度,垂直盒子中的控件有同样的高度). Spacing参数是组件之间的间隔.垂直盒子的创建函数是gtk vbox new(),定第16卷第1期2006年3月 湖南工程学院学报Journal of Hunan Institute of EngineeringVo1.16.No.1Mar.2006Ξ收稿日期:2005-09-06作者简介:黄 哲(1979-),男,助教,研究方向:计算机应用.义与水平盒子一致.gtk box pack start()和gtk box pack end()函数是用来将打包对象放入这些盒子中的.void gtk box pack start(GtkBox3box,GtkWidget3child,gint expand,gint fill,gint padding);第一个参数是你将组件打进去的盒子指针,第二个参数是你将要打进去的组件指针.Expand参数是用来控制是否允许组件扩展至分配给盒子空间的大小(选TRU E),还是盒子的大小收缩到组件那么大(选FAL SE).函数中的fill参数是用来控制是否将多余的空间分配给组件,即将组件扩展到盒子的大小(选TRU E),或者多余的空间不变,保留作为盒子和打包组件间的间隔.该参数只有在expand参数取TRU E时才有效.Padding参数是指组件四周与盒子的间隔大小.注意fill取FAL SE值,expand取TRU E值时与expand取FAL SE值,fill值无效的区别.前者的盒子仍是原来创建盒子时指定的大小,而后者的盒子已经缩小到打包组件的大小了.1.2 Gtk+2.0信号捕捉GT K是一个事件驱动工具包,当它运行到gtk-main()函数时会自动睡眠,直到有事件发生,控制权转让给相应的函数调用,在该函数中可以用标准C 写出相应的事物逻辑[3].这与windows上的程序处理是一样的.对窗口对象上发生的事件(如按下鼠标,激活键盘等),GT K有相应的消息信号产生.这时就需要程序员创建一个信号处理器来捕获该信号,并告诉GT K程序事件发生后调用哪个回调函数.信号处理器的创建函数定义如下:gint gtk signal connect(GtkObject3object, gchar3name,GtkSignalFunc callback func, gpointer func data);返回值是一个区分同一对象中的事件与不同回调函数的关联标签.这样可以做到一个对象的一个信号就有任意多个回调函数,并且每一个都会按照声明的顺序执行.函数调用的第一个参数是产生信号的widget组件(即按钮等窗口构件),而name则是希望捕获的信号或事件的名称,callback func则是事件发生后所调用的回调函数名称,而第四个参数func data则是传递给回调函数的参数.回调函数要定义在主程序的前面,它们的一般格式都如下所示:void callback func(GtkWidget3widget, gpointer func data);调用下面这个方法将允许你将回调函数与事件的关联断开:void gtk signal disconnect(GtkObject3ob2 ject,gint id);该函数的第二个参数就是上述gtk signal connect()函数的返回值,即关联标签.第一个参数指向了去除关联的对象名称.这样可以做到断开事件与回调函数的关联,使得事件发生后,不会调用相关的回调函数.2 Gtk的辅助工具G ladeG lade是一种图形界面开发工具,有点类似VB 的感觉,但它只能用于图形界面开发,本身不是一门丰富的程序设计语言,它是依靠GT K+来实现的程序的图形界面,也是说它只是为了简化GT K+的开发而存在的[4].2.1 新建工程当用户在glade窗口新建文件时,glade会弹出一个对话框,上面有两个选项,一个是新建GT K+工程,一个是新建GNOM E2工程,选择新建GT K+工程后,将显示图形界面开发环境.2.2 联编工程当按下主窗口的联编时,G lade产生用来生成程序GU I的所有文件.首先是project#目录,在这个目录中有ac2 config.h、autogen.sh、configure.in、Makefile.am、stamp-h.in、autoconf、autogen、automake文件,其中后3个文件是系统所必须的,在Linux下这个系统能够自动编译并检查库依赖性.通常G lade用户只需输入./autogen.sh来配置他们的程序以及生成所需的Makefiles文件.如果工程需要一个特定的库,这个库将会加入配置文件或生成的Makefiles文件中.在macros subdirectory这个目录中保存了auto2 conf和autogen等系统所需的宏.在src这个目录中有main.c support.c callbacks.c interface.c Make2 file.am Makefile.in Makefile文件,在main.c这个文件中包含了main(),main()是所有C程序的初始化函数.只有当这个文件不存在时G lade才创建,因此你可以随意编辑.当G lade第一次生成main.c文件时,它允许显示所有创建的窗口.如果想在程序开始时只显示一个窗口需要编辑这个文件.在sup295第1期 黄 哲等:Linux下的图形界面编程的实现port.c中包含glade支持函数,不能编辑.里面最有用的函数是lookup-widget(),允许通过另一个控件的名字查找特定控件callbacks.c中主要是glade所写的所有回调函数和信号处理器.G lade不重写这个文件,不过当需要更多的回调函数会向其中追加.G lade只写出了空的回调函数,需要你自己加入内容.interface.c也不能编辑.G lade在里面写了生成GU I的函数.再就是Makefile.am、Makefile.in和Makefile文件,这些文件由automake/autoconf包创建,为gcc编译程序提供指导.在这里可以加入包含的库、新的资源文件等等.2.3 保存工程当你在glade主窗口按下保存时,glade将会在工程选项中指定的目录下保存两个文件.如果没有指定任何工程名字,glade将会保存在个人目录下面的/Projects子目录下.工程名为’Project#’,#是一个数字,与你所建工程数量相关.给工程/程序命名时最好避免歧义.如果命名了工程,用你程序的名字替换下面的project#.保存时创建的两个文件是: Project1.glade和Project1.gladep.Project1’是你选项中给出的名字.这两个文件含有xml代码,glade 或libglade用来调出你所创的程序.如果联编了工程,3.glade文件将会被libglade调用.如果你想在程序中调用libglade那就直接使用3.glade文件.3 Gtk+2.0和G lade的聊天室实例聊天室程序是在Linux环境下用Gtk+2.0和G lade工具实现的[5].它基本用到了Linux下Gtk+图形编程的所有实用技术,包括动态按钮、图形、字体颜色、滚动条等.并结合了网络编程和多线程编程的相关技术.4 结束语目前X窗口(Xwindow)和GNU编译系统已成为应用linux或unix操作系统的计算机工作站和大型计算机上最主要的图形用户界面系统,在微机上也有广泛应用.而Gtk正是两者结合的编程开发包.Gtk+2.0以它熟悉的底层编程语言和方便实用的开发工具,在Linux下的图形界面编程领域有着较好的应用前景.参 考 文 献[1] Arthur Griffith.GNOME/GT K+编程宝典[M].电子工业出版社,2002.109-186.[2] Logan,战晓苏.GT K+程序设计C语言版[M].清华大学出版社,2002.256-374.[3] J.Bhasker.Linux平台下的C语言编程指南[M].机械工业出版社,2000.[4] Kurt Wall.GNU/Linux programming[M].清华大学出版社,2002.[5] 宋国伟.GT K+2.0编程范例[M].清华大学出版社,2002.106-308.R ealization of Linux G raph Interface ProgramingHUAN G Zhe,CHEN Duo(Dept.of Computer Science,Hunan Institute of Engineering,Xiangtan411104,China)Abstract:The Linux graphical interface programming always attracts the accention of the software personnel because it does not have the variow kinds of IDE tool used for the qraphical interface development under the win2 dows environ ment.At present many Linux graph interface programs are realized by Gtk+.The article intro2 duces the basic theory of Gtk+,and the graph development kit G lade based on GKT tool bag.The Layout way based Gtk and the G lade and the signal cpature realization are described in detail.At last,this article gives an example to illustrate the network chatroom.K ey w ords:Gtk;G lade;multithreading06 湖南工程学院学报 2006年。
第一章Linux系统简介一、思考题1.UNIX的大部分代码是用一种流行的程序设计语言编写的,该语言是什么?C语言2.UNIX系统的特点有哪些?·多任务·多用户·并行处理能力·设备无关性·工具·错误处理·强大的网络功能·开放性3.什么是Linux?其创始人是谁?Linux是一个功能强大的操作系统,同时它也是一个自由软件,是免费的、源代码开放的、可以自由使用的UNIX兼容产品。
其创始人是Linus4.Linux操作系统的诞生、发展和成长过程始终依赖者的重要支柱都有哪些?·UNIX操作系统·MINIX操作系统·GNU计划·POSIX标准·Internet5.简述Linux系统的特点。
·自由软件·良好的兼容性·多用户、多任务·良好的界面·丰富的网络功能·可靠地安全性、稳定性·支持多种平台6.常见的Linux的发行版本有哪些?·Red Hat Linux·Caldera OpenLinux·SuSE Linux·TurboLinux·红旗Linux·中软Linux二、选择题1.Linux最初是以MINIX操作系统为模板而开发出来的。
2.关于Linux内核版本的说法,下列选项中错误的是(C)。
A.表示为主版本号.次版本号.修正号B.1.2.3表示稳定的发行版C.1.3.3表示稳定的发行版D.2.2.5表示对内核2.2的第5次修正(补充:次版本号为偶数的是稳定版本;为奇数的则是测试版本。
)3.Linux属于自由软件。
4.自由软件的含义是软件可以自由修改和发布。
5.一下不具有多任务性的操作系统是DOS第二章Linux系统入门一、思考题1.Linux系统有哪些运行级别?其含义是什么?可用级别为0~6,其中0:关闭系统;6:重新启动,其他略。
linux教程第三版答案【篇一:linux系统应用教程习题答案】xt>1. linux系统有哪些主要的优点?答:linux的优点主要有:开放性、多用户、多任务、良好的图形用户界面、设备的独立性、丰富的网络功能、可靠的系统安全、良好的可移植性、丰富的应用软件支持、内核完全免费等优点。
2. 常用操作系统有哪些?它们各具有那些特点?答:常用操作系统主要有linux、unix、windows等。
linux是一个内核完全免费、可运行在多个硬件平台、功能齐全、安全性好、界面友好的一种操作系统。
unix功能强大、稳定性好,但价格昂贵,不适合小型企业或者个人使用。
windows是一个功能完全的多任务操作系统,具有丰富的应用软件,友好的用户界面,但windows主要运行在基于intel体系结构的pc系列机上,由微软公司独立控制系统的设计、升级和维护,用户使用windows需要支付一定的费用。
3. linux的组成结构有哪些?答:linux由四个主要部分组成,即内核、shell、文件系统和实用工具。
4. linux系统的主要应用领域有哪些?答:linux系统主要应用在桌面系统、服务器、嵌入式系统和集群计算机等领域。
第2章 linux系统的安装1. 什么是linux的多系统安装?答:linux的多系统安装指在同一台计算机中,除了安装linux外还安装其他操作系统。
此时,需要对计算机中的硬盘空间进行合理分配,并且按照不同操作系统的需要,在硬盘上建立相应格式的分区。
一般来说,linux的多系统安装指在同一台计算机中同时安装windows系统和linux系统。
2. 虚拟机安装linux有什么特点?答:与多系统linux相比,虚拟机安装linux采用了完全不同的概念。
多系统linux在一个时刻只能运行一个系统,在系统切换时需要重新启动机器。
而虚拟机安装linux系统是同时运行多个操作系统,而且每个操作系统都可以进行虚拟的分区、配置而不影响真实硬盘的数据,并且还可以将几台虚拟机连接为一个局域网。
shell程序linux课程设计一、课程目标知识目标:1. 理解Shell的基本概念,掌握其在Linux系统中的作用和重要性。
2. 学会使用基本的Shell命令,如文件操作、目录切换、权限管理等。
3. 掌握Shell脚本编写的基础知识,包括变量定义、流程控制、函数等。
4. 能够运用所学知识解决实际问题,如编写简单的自动化脚本。
技能目标:1. 培养学生熟练使用Linux终端和Shell命令的能力。
2. 培养学生编写和调试简单Shell脚本的能力。
3. 培养学生运用Shell脚本实现自动化任务的能力。
情感态度价值观目标:1. 培养学生对Linux系统和Shell编程的兴趣,激发学习热情。
2. 培养学生面对问题时的独立思考、解决问题的能力。
3. 培养学生的团队协作意识,学会与他人分享和交流学习经验。
课程性质:本课程为Linux shell程序设计,旨在让学生掌握Shell编程的基本知识,提高其在Linux系统下的操作能力和解决问题的能力。
学生特点:学生具备一定的计算机基础知识,对Linux系统有一定了解,但Shell编程经验较少。
教学要求:结合学生特点,课程设计应注重实践,以实例为主线,引导学生动手实践,提高其编程能力和实际操作能力。
将目标分解为具体的学习成果,以便后续的教学设计和评估。
二、教学内容1. Shell概述- Shell的定义与作用- 常见的Shell类型及特点2. 基本Shell命令- 文件和目录操作命令:ls、cd、pwd、mkdir、rm、cp、mv - 权限管理命令:chmod、chown- 文本处理命令:cat、grep、sort、uniq、cut、awk3. Shell脚本编写基础- 变量定义与使用- 流程控制语句:if、for、while- 函数的定义与调用4. Shell脚本实例分析- 简单自动化脚本编写- 系统监控脚本编写- 文件处理脚本编写5. Shell脚本调试与优化- 常见错误类型及解决方法- 调试技巧与优化策略教学内容安排与进度:1. 第1周:Shell概述及基本概念2. 第2周:基本Shell命令学习3. 第3周:Shell脚本编写基础4. 第4周:Shell脚本实例分析5. 第5周:Shell脚本调试与优化教材章节关联:1. Shell概述:《Linux操作系统》第3章2. 基本Shell命令:《Linux操作系统》第4章3. Shell脚本编写基础:《Linux Shell编程》第2章4. Shell脚本实例分析:《Linux Shell编程》第3章5. Shell脚本调试与优化:《Linux Shell编程》第4章三、教学方法本课程将采用以下教学方法,以促进学生主动学习,提高教学效果:1. 讲授法:教师通过讲解Shell编程的基本概念、语法和技巧,为学生提供必要的理论知识。
第1章 Linux概述1.什么是Linux?Linux是一套免费使用和自由传播的类UNIX操作系统,源代码开放,能运行于各类硬件平台,包括Intel x86系列和RISC处理器。
这个系统是由世界各地成千上万的程序员设计和实现的。
其目的是建立不受任何商品化软件的版权制约的、全世界都能自由使用的UNIX兼容产品。
2.Linux有哪些特性?(1)开放性(2)多用户(3)多任务(4)良好的用户界面(5)设备独立性(6)丰富的网络功能(7)可靠的系统安全(8)良好的可移植性3.Linux与Windows操作系统的主要区别是什么?(1)从发展的背景看,Linux是从一个比较成熟的操作系统发展而来的,而其他操作系统,如Windows等,都是自成体系,无对应的相依托的操作系统(2)从使用费用上看,Linux是一种开放、免费的操作系统,Windows是封闭的系统,需要有偿使用。
(3)Linux上丰富的应用软件也是自由的,而在Windows下,几乎所有的软件都有独立的版权,需要购买使用,即使某些软件可以免费使用,也一般不提供其源代码,更不用说由用户修改扩充其功能了。
(4)Windows对硬件配置要求高,而Linux在低端PC系统上仍然可以流畅运行4.Linux与Unix的共同点与不同点是什么?共同点:由于Linux是从Unix发展来到,它遵循Unix开放标准,基本支持同样的软件、程序设计环境和网络特性,可以说Linux是UNIX的PC版本,Linux在PC机上提供了相当于UNIX工作站的性能。
与商用Unix的不同点有:1)Linux是免费软件,用户可以从网上下载,而商用的UNIX除了软件本身的价格外,用户还需支付文档、售后服务费用;2)Linux拥有GNU软件支持,Linux能够运行GNU计划的大量免费软件,这些软件包括应用程序开发、文字处理、游戏等方面的内容;3)Linux的开发是开放的,任何志愿者都可以对开发过程做出贡献;而商用UNIX则是由专门的软件公司进行开发的。