第1部分 基本概念 3
第1章 Python 3
1.1 Python编程及特点概述 3
1.1.1 为什么是Python 4
1.1.2 Python能被用于何处 4
1.2 关键字数据类型:表、元组和字典 4
1.2.1 表 5
1.2.2 元组 6
1.2.3 字典 7
1.3 类 8
1.3.1 类是怎样描述对象的 8
1.3.2 定义类 8
1.3.3 Python技巧 8
1.3.4 一个实例的初始化 9
1.3.5 方法 9
1.3.6 私有与公有变量和方法 9
1.3.7 继承性 10
1.3.8 多重继承性 10
1.3.9 混合类 10
第2章 Tkinter 11
2.1 Tkinter模块 11
2.1.1 Tkinter是什么 11
2.1.2 性能如何 11
2.1.3 如何运用Tkinter 12
2.1.4 Tkinter的特点 12
2.2 Tcl/Tk对Tkinter的映像 13
2.3 Win32和Unix下的GUI 13
2.4 Tkinter类的层次 14
2.5 Tkinter控件的外观 15
第3章 建立一个应用 16
3.1 计算器范例:关键特点 18
3.2 计算器范例:源代码 19
3.3 检查应用结构 25
3.4 应用的扩展 26
第2部分 显示 29
第4章 Tkinter控件 29
4.1 Tkinter控件漫游 29
4.1.1 顶层 29
4.1.2 框架 30
4.1.3 标签 32
4.1.4 按钮 32
4.1.5 输入 34
4.1.6 单选按钮 34
4.1.7 复选按钮 35
4.1.8 主菜单 35
4.1.9 消息 38
4.1.10 文本 39
4.1.11 画布 40
4.1.12 滚动条 41
4.1.13 列表框 41
4.1.14 标尺 42
4.2 字体和和颜色 43
4.2.1 字体描述符 43
4.2.2 X视窗系统字体描述符 43
4.2.3 颜色 44
4.2.4 设置宽应用默认字体和颜色 44
4.3 Pmw大控件漫游 45
4.3.1 关于框 45
4.3.2 浮动图 46
4.3.3 按钮框 47
4.3.4 组合框 47
4.3.5 组合对话框 49
4.3.6 计数器 49
4.3.7 计数对话框控件 50
4.3.8 对话框 51
4.3.9 输入域 51
4.3.10 组 52
4.3.11 标签控件 53
4.3.12 菜单条 54
4.3.13 消息栏 54
4.3.14 消息对话 55
4.3.15 记事本R 56
4.3.16 记事本S 57
4.3.17 记事本 57
4.3.18 选项菜单 58
4.3.19 窗格控件 59
4.3.20 提示对话框 60
4.3.21 单选选项 60
4.3.22 滚动画布 61
4.3.23 滚动区域 62
4.3.24 滚动框架 62
4.3.25 滚动列表框 63
4.3.26 滚动文本 64
4.3.27 选项对话 64
4.3.28 文本对话 65
4.3.29 时间计数 66
4.4 创建新的大控件 66
4.4.1 大控件的描述 66
4.4.2 选项 67
4.4.3 制作大控件类 67
第5章 屏幕版面设计 70
5.1 版面设计的介绍 70
5.2 打包器 71
5.2.1 使用展开选项 74
5.2.2 使用填充选项 74
5.2.3 使用padx和pady选项 75
5.2.4 使用锚选项 76
5.2.5 使用分层性包装 76
5.3 网格 77
5.4 放置器 82
5.5 小结 85
第6章 事件,捆绑和回叫 87
6.1 事件驱动系统:评论 87
6.1.1 事件是什么 87
6.1.2 事件的传播 88
6.1.3 事件类型 88
6.2 Tkinter事件 89
6.3 回叫 93
6.4 λ表达 94
6.5 捆绑事件和回叫 95
6.5.1 捆绑方法 95
6.5.2 处理多重捆绑 97
6.6 定时器和背景程序 97
6.7 动态回叫管理者 98
6.8 使事件运作 98
6.8.1 捆绑动态数据与控件 98
6.8.2 数据确认 102
6.8.3 格式化(smart)控件 107
6.9 小结 109
第7章 使用类、控件和特殊控件 110
7.1 创建发光二极管类 110
7.1.1 再试试 115
7.1.2 什么改变了 119
7.2 构件类库 119
7.2.1 将六边形螺帽加入类库 121
7.2.2 创建开关类 123
7.2.3 创建大控件 126
7.3 小结 129
第8章 对话框和窗体 130
8.1 对话框 130
8.1.1 标准对话框 131
8.1.2 数据输入对话框 132
8.1.3 简单表格 135
8.1.4 Tkinter变量 140
8.2 标准窗体框架 144
8.3 数据字典 154
8.4 活页夹 160
8.5 浏览器 163
8.6 压缩程序 172
8.7 图像映射 180
8.8 小结 187
第9章 面板与机器 188
9.1 创建前端面板 188
9.2 模块性 189
9.3 实现前端面板 190
9.4 GIF、BMP与图层 204
9.5 一个更完整的例子 209
9.6 使用POV-Ray创建的虚拟设备 222
9.6.1 现在看点完全不同的东西 222
9.7 小结 225
第10章 绘制点和标尺 226
10.1 在画布上绘图 226
10.1.1 移动画布对象 231
10.2 一个更完整的绘图程序 232
10.3 滚动画布 240
10.4 标尺工具 243
10.5 缩放画布对象 246
10.6 一些已完成的小玩意 251
10.7 快速绘制 260
10.8 小结 263
第11章 图形和图表 264
11.1 简单图形 264
11.2 图形控件 266
11.2.1 添加条形图 273
11.2.2 饼图 276
11.3 二维图形 279
11.4 带形记录图 284
11.5 小结 286
第12章 导航 287
12.1 引言:导航方法 287
12.2 鼠标导 287
12.3 键盘导航:“无鼠标导航” 288
12.4 建立应用程序的导航 288
12.5 图像映射 291
12.6 小结 291
第13章 窗口管理器 292
13.1 什么是窗口管理器 292
13.2 几何方法 293
13.3 可见性方法 293
13.4 图标方法 294
13.5 协议方法 294
13.6 其他wm方法 295
第3部分 组合起来 299
第14章 Python扩展 299
14.1 写Python扩展 299
14.2 建立Python扩展 301
14.2.1 在Unix下静态链接一个扩展 302
14.2.2 在Windows下静态链接一个扩展 302
14.2.3 在Unix下构建动态模块 303
14.2.4 在Windows下构建动态模块 303
14.2.5 安装动态模块 304
14.2.6 使用动态模块 304
14.3 在扩展中使用Python API 304
14.4 在C++中构建扩展 306
14.5 格式化字符串 306
14.6 引用计数 309
14.7 嵌入式的Python 309
14.8 小结 313
第15章 调试程序 314
15.1 为什么使用print表达式 314
15.2 一个简单的例子 314
15.3 如何调试 317
15.4 Tkinter开发器 318
15.5 pdb 319
15.6 IDLE 319
15.7 DDD 320
第16章 设计有效的图形应用程序 321
16.1 友好界面设计的元素 321
16.2 人为因素 324
16.2.1 选择字体 325
16.2.2 在GUI中使用颜色 326
16.2.3 尺寸的考虑 327
16.3 可选择的GUI 327
16.4 小结 328
第17章 性能编程 329
17.1 每日加速 329
17.1.1 程序组织 329
17.1.2 使用Python优化器 330
17.1.3 检查代码 330
17.2 Tkinter性能 330
17.2.1 让它保持简短 331
17.2.2 删减本地变量 331
17.2.3 保持简单 332
17.2.4 快速初始化 332
17.2.5 节省事件 332
17.3 Python技术 332
17.3.1 引用模块 333
17.3.2 字符串链接 333
17.3.3 正确使用嵌套的循环 334
17.3.4 减少模块引用 334
17.3.5 使用本地变量 335
17.3.6 使用异常处理 335
17.3.7 使用map,filter和reduce 336
17.4 程序剖析 337
17.5 Python扩展 340
17.6 小结 340
第18章 线程和异步技术 341
18.1 线程 341
18.1.1 非图形用户界面下的线程 341
18.1.2 图形用户界面下的线程 344
18.2 “after”处理 348
18.3 小结 351
第19章 发布Tkinter程序 353
19.1 发布程序的一般问题 353
19.2 发布Unix程序 354
19.3 发布Win32程序 354
19.4 Python发布工具 356
第4部分 附录 361
附录A Tk到Tkinter映射 361
附录B Tkinter参考资料 392
附录C Pmw参考:Python Megawidgets 485
附录D 创建和安装Python,Tkinter 539
附录E 事件与键盘系统 545
附录F 光标 549
附录G 参考文献 551