第Ⅰ部分 Tcl語言
第1章 Tcl和Tk概覽 3
1.1 從這裏起步 3
1.2 用Tk編寫"Hello, world!"程序 5
1.3 腳本文件 7
1.3.1 在Unix和Mac OS X中
運行腳本 7
1.3.2 在Windows中執行腳本 8
1.3.3 在交互式解釋器中運行腳本 8
1.4 變量與替換 8
1.5 控製結構 9
1.6 關於Tcl語言 11
1.7 事件綁定 12
1.8 Tcl和Tk的更多功能 14
第2章 Tcl語言的語法 16
2.1 腳本、命令和單詞 16
2.2 處理命令 16
2.3 變量替換 18
2.4 命令替換 19
2.5 反斜綫替換 20
2.6 雙引號引用 21
2.7 大括號引用 22
2.8 參數展開 24
2.9 注釋 25
2.10 正常返迴和異常返迴 26
2.11 有關替換的更多信息 27
第3章 變量 29
3.1 本章齣現的命令 29
3.2 簡單變量和set命令 30
3.3 Tcl的內部數據存儲 30
3.4 數組 31
3.5 變量替換 32
3.6 多維數組 33
3.7 查詢數組的元素 34
3.8 incr命令和append命令 35
3.9 移除變量:unset和array unset 36
3.10 預定義變量 36
3.11 其他變量功能預覽 37
第4章 錶達式 38
4.1 本章齣現的命令 38
4.2 數值操作數 38
4.3 操作符及其優先級 39
4.3.1 算術操作符 40
4.3.2 關係操作符 40
4.3.3 邏輯操作符 41
4.3.4 按位操作符 41
4.3.5 選擇操作符 41
4.4 數學函數 42
4.5 替換 43
4.6 字符串操作 44
4.7 列錶操作 45
4.8 類型與轉換 46
4.9 精度 46
第5章 字符串操作 47
5.1 本章齣現的命令 47
5.2 取得字符:string index
和string range 50
5.3 長度、大小寫轉換、裁剪以及重復 50
5.4 簡單搜索 51
5.5 字符串比較 51
5.6 字符串置換 52
5.7 確定字符串類型 53
5.8 用format創建字符串 54
5.9 用scan解析字符串 56
5.10 通配符樣式的模式匹配 57
5.11 使用正則錶達式進行模式匹配 58
5.11.1 正則錶達式的原子 58
5.11.2 正則錶達式的分支和量詞 61
5.11.3 逆嚮引用 62
5.11.4 非捕獲子錶達式 62
5.11.5 regexp命令 62
5.12 使用正則錶達式進行替換 63
5.13 字符集專題 64
5.13.1 字符編碼和操作係統 65
5.13.2 編碼和通道輸入/輸齣 65
5.13.3 轉化字符串的編碼格式 66
5.14 消息目錄 66
5.14.1 使用消息目錄 66
5.14.2 創建本地消息文件 67
5.14.3 在源字符串和翻譯字符串中
使用轉換符 68
5.14.4 在命名空間中使用
消息目錄 69
5.15 二進製字符串 69
第6章 列錶 73
6.1 本章齣現的命令 73
6.2 基本列錶結構與lindex
和llength命令 74
6.3 創建列錶:list、concat和lrepeat 76
6.4 修改列錶:lrange、linsert、lreplace、
lset和lappend 77
6.5 從列錶中取得元素:lassign 79
6.6 搜索列錶:lsearch 79
6.7 排序列錶:lsort 80
6.8 在字符串和列錶之間轉化:split
與join 81
6.9 用列錶創建命令 82
第7章 字典 84
7.1 本章齣現的命令 84
7.2 基本字典結構與 dict get命令 86
7.3 創建和更新字典 88
7.4 檢測字典:子命令size、exists、
keys和for 89
7.5 更新字典中的值 90
7.6 使用嵌套字典 92
第8章 流程控製 96
8.1 本章齣現的命令 96
8.2 if命令 97
8.3 switch命令 98
8.4 循環命令:while、for和foreach 100
8.5 循環控製:break與continue 101
8.6 eval命令 102
8.7 從文件運行:source 103
第9章 過程 104
9.1 本章齣現的命令 104
9.2 過程基礎:proc與return 105
9.3 局部和全局變量 106
9.4 參數變量的數目和默認設置 106
9.5 傳引用調用:upvar 107
9.6 創建新的控製結構:uplevel 109
9.7 應用匿名過程 110
第10章 命名空間 112
10.1 本章齣現的命令 112
10.2 在命名空間中處理Tcl腳本 114
10.3 操作限定名稱 116
10.4 在命名空間中導齣和導入命令 117
10.5 檢查命名空間 118
10.6 有關集閤命令 119
10.6.1 基本的集閤命令 119
10.6.2 在集閤命令中設置
集閤命令 120
10.6.3 控製集閤命令的設置 121
10.6.4 管理集閤unknown
子命令 121
10.7 訪問其他命名空間的變量 123
10.8 名稱解析路徑的控製 124
第11章 訪問文件 126
11.1 本章齣現的命令 126
11.2 操縱文件和目錄名 128
11.3 當前工作目錄 130
11.4 列齣目錄的內容 130
11.5 處理磁盤上的文件 132
11.5.1 創建目錄 132
11.5.2 刪除文件 132
11.5.3 復製文件 133
11.5.4 重命名和移動文件 133
11.5.5 文件信息命令 134
11.5.6 處理名稱怪異的文件 135
11.6 讀寫文件 135
11.6.1 基本文件I/O 135
11.6.2 輸齣緩衝區 137
11.6.3 處理各平颱的行
結束約定 137
11.6.4 管理字符編碼集 139
11.6.5 處理二進製文件 139
11.6.6 隨機訪問文件 139
11.6.7 復製文件內容 140
11.7 虛擬文件係統 142
11.8 係統調用中的錯誤 143
第12章 進程間通信 144
12.1 本章齣現的命令 144
12.2 用exit終止Tcl進程 145
12.3 用exec調用子進程 146
12.4 命令管綫的輸入輸齣 148
12.5 配置通道選項 149
12.5.1 通道阻塞模式 149
12.5.2 通道的緩衝模式 150
12.6 事件驅動的通道交互 150
12.6.1 用vwait進入Tcl
事件循環 151
12.6.2 注冊文件事件處理器 151
12.7 進程ID 153
12.8 環境變量 153
12.9 TCP/IP套接字通信 153
12.9.1 創建客戶通信套接字 154
12.9.2 創建服務器套接字 155
12.10 嚮Tcl程序發送命令 157
12.10.1 send基礎 157
12.10.2 應用程序名稱 157
12.10.3 有關send的安全問題 158
第13章 錯誤與異常 159
13.1 本章齣現的命令 159
13.2 在齣現錯誤後會發生什麼 160
13.3 由Tcl腳本生成錯誤 161
13.4 用catch捕獲錯誤 161
13.5 異常概述 162
13.6 後颱錯誤與bgerror 164
第14章 創建與使用Tcl腳本庫 166
14.1 本章齣現的命令 166
14.2 load命令 168
14.3 庫的使用 168
14.4 自動加載 168
14.5 包 170
14.5.1 包的使用 170
14.5.2 包的創建 170
14.5.3 使用::pkg::create 172
14.5.4 包的安裝 172
14.5.5 包的實用命令 172
14.6 Tcl模塊 173
14.6.1 使用Tcl模塊 173
14.6.2 安裝Tcl模塊 174
14.7 把腳本打包為Starkit 175
14.7.1 安裝Tclkit 176
14.7.2 創建Starkit 176
14.7.3 創建平颱相關的可執行
文件 178
第15章 Tcl內部管理 179
15.1 本章齣現的命令 179
15.2 時間延遲 183
15.3 時間和日期操作 184
15.3.1 産生可讀的時間
和日期字符串 184
15.3.2 掃描可讀的時間
和日期字符串 186
15.3.3 進行時間計算 187
15.4 運行計時命令 188
15.5 info命令 188
15.5.1 有關變量的信息 188
15.5.2 有關過程的信息 189
15.5.3 有關命令的信息 190
15.5.4 Tcl解釋器版本及其
他運行環境信息 191
15.6 對簡單變量的跟蹤操作 191
15.7 跟蹤數組變量 194
15.8 重命名和刪除命令 194
15.9 跟蹤命令 195
15.10 未知命令 197
15.11 從解釋器 198
15.11.1 命令彆名 200
15.11.2 安全從解釋器
和隱藏命令 201
15.11.3 解釋器之間的傳輸通道 202
15.11.4 為解釋器設定限製 203
第16章 曆史 205
16.1 本章齣現的命令 205
16.2 曆史列錶 206
16.3 描述事件 206
16.4 從曆史列錶中再次執行命令 207
16.5 利用unknown實現的快捷方式 207
16.6 當前事件號:history nextid 208
第Ⅱ部分 編寫Tk腳本
第17章 Tk入門 211
17.1 窗口係統簡介 211
17.2 組件 213
17.3 應用、頂層組件和屏幕 214
17.4 腳本和事件 215
17.5 創建和刪除組件 216
17.6 幾何管理器 216
17.7 組件命令 217
17.8 互連命令 218
第18章 Tk組件概覽 219
18.1 組件基礎 219
18.2 框架 221
18.2.1 浮雕選項 221
18.2.2 屏幕距離選項 221
18.3 顔色選項 222
18.4 頂層 223
18.5 標簽 223
18.5.1 文本選項 223
18.5.2 字體選項 224
18.5.3 圖像選項 224
18.5.4 復閤選項 225
18.6 標簽框架 225
18.7 按鈕 226
18.7.1 復選按鈕 226
18.7.2 單選按鈕 227
18.7.3 菜單按鈕 228
18.8 列錶框 229
18.9 滾動條 229
18.9.1 移動單個的組件 230
18.9.2 多個組件的同步滾動 231
18.10 標尺 232
18.11 輸入框 233
18.11.1 輸入框組件 233
18.11.2 調節框 234
18.11.3 show選項 234
18.11.4 驗證 235
18.12 菜單 236
18.12.1 下拉菜單 237
18.12.2 級聯菜單 238
18.12.3 鍵盤遍曆和快捷鍵 239
18.12.4 針對平颱的菜單 240
18.12.5 彈齣式菜單 240
18.13 分欄窗口 241
18.14 標準對話框 243
18.15 其他的常見選項 244
18.15.1 組件狀態 244
18.15.2 組件尺寸選項 244
18.15.3 錨定選項 245
18.15.4 內部補白 245
18.15.5 光標選項 246
第19章 主題組件 247
19.1 比較經典組件和主題組件 247
19.2 組閤框 249
19.3 記事本 249
19.4 進度條 251
19.5 分隔符 252
19.6 尺寸控製柄 252
19.7 目錄樹 252
19.7.1 管理目錄樹條目 252
19.7.2 控製目錄樹的列和標題 255
19.7.3 目錄樹條目選擇管理 256
19.7.4 目錄樹條目標記 257
19.8 主題組件狀態 258
19.9 主題組件樣式 259
19.9.1 使用主題 260
19.9.2 樣式的元素 260
19.9.3 創建和配置樣式 261
19.10 其他標準主題組件選項 263
第20章 字體、位圖和圖像 264
20.1 本章齣現的命令 264
20.2 font命令 265
20.2.1 控製和使用命名字體 266
20.2.2 其他的字體應用 269
20.2.3 字體描述 269
20.3 image命令 270
20.3.1 位圖圖像 271
20.3.2 相片圖像 271
20.3.3 圖像和命名空間 275
第21章 幾何管理器 277
21.1 本章齣現的命令 277
21.2 幾何管理器概覽 278
21.3 網格管理器 279
21.3.1 grid命令和-sticky選項 282
21.3.2 跨行和跨列 283
21.3.3 拉伸行為與-weight
和-uniform選項 283
21.3.4 相對位置字符 284
21.4 打包器 285
21.4.1 pack命令和-side選項 287
21.4.2 充滿 288
21.4.3 擴充 288
21.4.4 錨定 290
21.4.5 打包順序 290
21.5 補白 291
21.6 定位器 291
21.7 層級結構幾何管理 292
21.8 組件堆棧順序 293
21.9 其他幾何管理器選項 294
21.10 Tk裏的其他幾何管理器 295
第22章 事件和綁定 297
22.1 本章齣現的命令 297
22.2 事件 298
22.3 bind命令概覽 299
22.4 事件模式 300
22.5 事件序列 301
22.6 腳本中的置換 301
22.7 解決衝突 302
22.8 事件綁定層級結構 303
22.9 事件何時被處理 304
22.10 命名虛擬事件 305
22.11 生成事件 307
22.12 邏輯動作 308
22.13 綁定的其他用途 310
第23章 畫布組件 311
23.1 畫布基礎:條目和類型 311
23.2 控製帶標識符和標記的條目 313
23.3 綁定 315
23.4 畫布滾動 318
23.5 生成Postscript 319
第24章 文本組件 321
24.1 文本組件的基本原理 321
24.2 文本索引與記號 323
24.3 搜索與替換 324
24.4 文本標記 325
24.4.1 標記選項 326
24.4.2 標記優先級 328
24.4.3 標記綁定 328
24.5 虛擬事件 329
24.6 嵌入式窗口 329
24.7 嵌入圖像 330
24.8 撤銷 331
24.9 同級文本組件 334
第25章 選擇與剪貼闆 336
25.1 本章齣現的命令 336
25.2 選擇、檢索和類型 337
25.3 定位和清除選擇 338
25.4 用Tcl 腳本提供選擇 339
25.5 clipboard命令 340
25.6 拖曳和釋放 341
第26章 窗口管理器 342
26.1 本章齣現的命令 342
26.2 窗口尺寸 344
26.3 窗口位置 346
26.4 網格化窗口 346
26.5 窗口狀態 347
26.6 裝飾 348
26.7 特殊處理:瞬態、組
和覆蓋-重定嚮 349
26.8 針對係統的窗口屬性 349
26.9 可停靠的窗口 350
26.10 關閉窗口 351
26.11 會話管理 352
第27章 焦點、模態交互
與自定義對話框 353
27.1 本章齣現的命令 353
27.2 輸入焦點 354
27.2.1 焦點模式:顯式與隱式 354
27.2.2 設置輸入焦點 355
27.2.3 查詢輸入焦點 355
27.3 模態交互 356
27.3.1 攫取 356
27.3.2 局部和全局攫取 357
27.3.3 攫取中的鍵盤處理 357
27.3.4 等待:tkwait命令 358
27.4 自定義對話框 359
第28章 更多配置選項 363
28.1 本章齣現的命令 363
28.2 選項數據庫 364
28.3 選項數據庫條目 364
28.4 RESOURCE_MANAGER
屬性和.Xdefaults文件 365
28.5 選項數據庫的優先級 366
28.6 option命令 367
28.7 configure組件命令 367
28.8 cget組件命令 368
第29章 關於Tk的其他內容 369
29.1 本章齣現的命令 369
29.2 刪除組件 370
29.3 update命令 370
29.4 關於組件的信息 371
29.5 tk命令 371
29.6 Tk控製的變量 372
29.7 響鈴 373
第Ⅲ部分 C語言中Tcl應用程序的編寫
第30章 Tcl與C語言的集成原理 377
30.1 Tcl與C:如何選用 378
30.2 資源名稱--把C結構
連接到Tcl 379
30.3 "麵嚮動作"與"麵嚮對象" 380
30.4 描述性信息 381
第31章 解釋器 382
31.1 本章齣現的函數 382
31.2 解釋器概述 383
31.3 簡單的Tcl 應用程序 384
31.4 刪除解釋器 385
31.5 多重解釋器 385
第32章 Tcl對象 387
32.1 本章齣現的函數 387
32.2 字符串對象 390
32.3 數值對象 390
32.4 從對象中獲取C語言數據 391
32.5 Tcl對象的動態本質 391
32.6 字節數組 392
32.7 復閤對象 392
32.8 引用計數 393
32.9 共享對象 393
32.10 新的對象類型 394
32.11 解析字符串 395
32.12 內存分配 395
第33章 處理Tcl代碼 397
33.1 本章齣現的函數 397
33.2 處理Tcl代碼 398
33.3 動態創建腳本 399
33.4 Tcl錶達式 400
第34章 訪問Tcl變量 401
34.1 本章齣現的函數 401
34.2 設置變量值 403
34.3 讀取變量 404
34.4 刪除變量 405
34.5 鏈接Tcl和C變量 405
34.6 設置與刪除變量跟蹤 407
34.7 跟蹤迴調 407
34.8 全數組跟蹤 409
34.9 多重跟蹤 409
34.10 刪除迴調 409
第35章 創建新的Tcl命令 411
35.1 本章齣現的函數 411
35.2 命令函數 413
35.3 注冊命令 414
35.4 結果協議 416
35.5 Tcl_AppendResult 416
35.6 Tcl_SetResult和interp->result 416
35.7 clientData和刪除迴調 418
35.8 刪除命令 420
35.9 獲取與設置命令參數 420
35.10 Tcl過程如何工作 422
35.11 命令跟蹤 423
第36章 擴展包 424
36.1 本章齣現的函數 424
36.2 Init函數 425
36.3 包 425
36.4 命名空間 426
36.5 Tcl占位符 426
36.6 ifconfig擴展包 427
第37章 嵌入Tcl 433
37.1 本章齣現的函數 433
37.2 將Tcl添加到應用程序 433
37.3 初始化Tcl 434
37.4 創建新的Tcl外殼 435
第38章 異常 437
38.1 本章齣現的函數 437
38.2 完成代碼 438
38.3 設置errorCode 440
38.4 管理返迴的選項字典 441
38.5 在errorInfo中添加堆棧跟蹤 441
38.6 TcL_Panic 444
第39章 字符串工具 445
39.1 本章齣現的函數 445
39.2 動態字符串 449
39.3 字符串匹配 452
39.4 正則錶達式匹配 453
39.5 處理字符編碼 454
39.6 處理Unicode和UTF-8字符串 455
39.7 命令完整性 457
第40章 哈希錶 459
40.1 本章齣現的函數 459
40.2 關鍵字和值 461
40.3 創建和刪除哈希錶 461
40.4 創建條目 462
40.5 查找已存在的條目 463
40.6 搜索 464
40.7 刪除條目 465
40.8 統計 465
第41章 列錶和字典對象 467
41.1 本章齣現的函數 467
41.2 列錶 469
41.3 字典 471
第42章 通道 475
42.1 本章齣現的函數 475
42.1.1 基本通道操作 475
42.1.2 通道注冊函數 478
42.1.3 通道屬性函數 478
42.1.4 通道查詢函數 479
42.1.5 通道類型定義函數 480
42.2 通道操作 480
42.3 注冊通道 482
42.4 標準通道 484
42.5 創建新的通道類型 484
42.5.1 創建自定義通道實例 485
42.5.2 堆疊通道 485
42.5.3 ROT13通道 486
第43章 事件處理 492
43.1 本章齣現的函數 492
43.2 通道事件 493
43.3 時間處理器 495
43.4 休眠迴調 496
43.5 調用事件調度器 497
第44章 文件係統的交互 500
44.1 Tcl文件係統函數 500
44.2 虛擬文件係統 502
第45章 操作係統工具 503
45.1 本章齣現的函數 503
45.2 進程 504
45.3 收割子進程 506
45.4 異步事件 507
45.5 信號名稱 509
45.6 退齣與清理 509
45.7 其他 510
第46章 綫程 511
46.1 本章齣現的函數 511
46.2 綫程安全 512
46.3 構建支持綫程的Tcl 512
46.4 創建綫程 512
46.5 終止綫程 513
46.6 互斥體 513
46.7 條件變量 514
46.8 其他 515
第47章 構建Tcl及其擴展 517
47.1 構建Tcl和Tk 517
47.1.1 在Unix中構建Tcl
和Tk 518
47.1.2 在Mac OS上構建Tcl
和Tk 519
47.1.3 在Windows中構建Tcl
和Tk 519
47.2 Tcl擴展架構(TEA) 520
47.2.1 TEA標準配置選項 521
47.2.2 TEA擴展包的目錄結構 521
47.2.3 定製aclocal.m4文件 522
47.2.4 定製configure.in文件 522
47.2.5 定製Makefile.in文件 525
47.2.6 在Windows中構建
擴展包 525
47.3 構建嵌入的Tcl 525
第Ⅳ部分 附錄
附錄A 安裝Tcl和Tk 529
A.1 版本 529
A.2 Tcl發布包 529
A.3 ActiveTcl 530
A.4 Tclkit 530
A.5 用發布的源碼編譯Tcl/Tk 530
附錄B 擴展包和應用程序 531
B.1 獲取和安裝擴展包 531
B.1.1 手動安裝擴展包 531
B.1.2 為ActiveState TEApot
檔案庫安裝擴展包 531
B.2 TkCon擴展控製颱 533
B.3 標準Tcl庫:Tcllib 533
B.4 Img提供的額外的圖形格式 534
B.5 Snack提供的聲音支持 534
B.6 麵嚮對象的Tcl 534
B.7 多綫程Tcl腳本 535
B.8 XML編程 535
B.9 數據庫編程 536
B.10 整閤Tcl和Java 536
B.11 SWIG 537
B.12 Expect 537
B.13 擴展Tcl 538
附錄C Tcl資源 539
C.1 在綫資源 539
C.2 書籍 540
附錄D Tcl源碼發布許可 541
· · · · · · (
收起)