X窗口系统的程序设计

  • X服务器

Linux和其他基于PC的系统上最常见的X实现是XFree86(网址点击打开链接)

这个软件包里的X服务器都是为PC个人电脑上使用的各种显卡专门编写的

  • X协议

X协议不仅能够穿越网络,运行在同一台机器上的客户和服务器之间同样适用

  • Xlib库

大多数X软件都需要使用一个C语言函数库作为程序的设计接口,Xlib库

它为X协议里信息交换提供了一个API

Xlib本身并没有增加太多东西,它只能在屏幕上画线条和对鼠标动作做出相应

如果你需要菜单/按钮/卷屏条以及其他东西,必须自己编写

  • X工具包

详细介绍见本书 482页

包括Xt/OpenLook/Motif/Qt和GTK+

工具包造成的差异:

linux里有两个不同的编辑器xedit和textedit.xedit是一个非常简单的编辑器,想加载一个文件,必须将名字敲入一个框子里,再点击"load"按钮

textedit是sun公司用OpenLook工具包编写的.在打开文件的时候,用户可以浏览文件系统跳出自己想打开的文件,提供了熟悉的3D效果

  • 启动

Display *XOpenDisplay(char *display_name);
int XCloseDisplay(Display *display);
display_name参数指定的是我们打算链接的显示设备.如果他是NULL,就使用环境变量DISPLAY的值
它的格式是 "hostname:server[.display]",一台主机可以有一个以上的X服务器,每个服务器可以控制一个以上的显示设备

比如桌面确实很大,你可以使用":0.1"

当客户程序用完X服务器的时候,它必须以最初由XOpenDisplay调用返回的那个Dispay结构为参数调用XCloseDisplay

环境变量DISPLAY被用来把应用程序引向每个特定的显示服务器

  • X用到的事件

键盘事件按键的按下和释放
鼠标事件按钮的按下和释放;鼠标移动;鼠标进入/离开一个窗口
窗口事件

窗口的创建/关闭;窗口获得/失去焦点;窗口被遮蔽/重新显示等

  • Tk工具包

Tk的素材是用C语言编写的,并且要通过Tcl语言绑定到事件处理器上

下载地址 点击打开链接

在Tk程序设计之前,需要保证Tk的窗口化shell,即wish

还需要设置环境变量TK_LIBRARY和TCL_LIBRARY指向正确的地点

  • wish

shell敲入wish,弹出交互式wish窗口,wish是一个内建了Tk函数的tclsh

  • 窗口程序设计

首先,创建程序的外观,添加必要的组件以访问最终要包括在程序中的功能,从Tk工具包里挑选一个素材,对它的外观进行初始化

然后,用Tk的几何尺寸管理器安排好它在屏幕窗口里与其他素材的相对位置

接着,编写代码,让每一个GUI部件对相应的用户命令做出正确的响应

比如,点击"load"按钮

  • 素材命令

button .b

创建一个新素材和一个名为".b"的素材命令

.b configure -text "Hello"

将把按钮".b"上的文字设置为"Hello"

  • 动手说"Hello"

#!/usr/bin/wish -f

pack [button .b -text "Hello\nWorld!!!" \
                -juntify center \        
                -width 20 \
                -command (puts "Hi")]

# ./hello.tk

即可出现窗口化的Hello World

-command选项给这个按钮链接了一个事件处理器

当点击这个按钮时,就会在父窗口里输出字符串"Hi"

".a.b.c"表示素材,".c"是".a.b"的子/".a"的孙/应用程序素材"."的重孙



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值