# 以 Tk 打造 GUI

Tcl/Tk集成到Python中已经有一些年头了。Python程序员可以通过 `tkinter` 包和它的扩展， `tkinter.tix` 模块和 `tkinter.ttk` 模块，来使用这套鲁棒的、平台无关的窗口工具集。

`tkinter` 包使用面向对象的方式对Tcl/Tk进行了一层薄包装。使用 `tkinter` ，你不需要写Tcl代码，但可能需要参考Tk文档，甚至Tcl文档。 `tkinter` 使用Python类，对Tk的窗体小部件（Widgets）进行了一系列的封装。除此之外，内部模块 `_tkinter` 针对Python和Tcl之间的交互，提供了一套线程安全的机制。

`tkinter` 最大的优点就一个字：快，再一个，是Python自带的。尽管官方文档不太完整，但有其他资源可以参考，比如Tk手册，教程等。 `tkinter` 也以比较过时的外观为人所知，但在Tk 8.5中，这一点得到了极大的改观。除此之外，如果有兴趣，还有其他的一些GUI库可供使用。更多信息，请参考 其它的 GUI 小节。

- `tkinter` --- Tcl/Tk的Python接口
  - Tkinter 模块
  - Tkinter 拾遗
    - 本节内容的用法
    - 简单的 Hello World 程序
  - Tcl/Tk 速览
  - 将简单的 Tk 映射到 Tkinter
  - Tk 和 Tkinter 如何关联
  - 快速参考
    - 可选配置项
    - 包装器
    - 包装器的参数
    - 部件与变量的关联
    - 窗口管理器
    - Tk 参数的数据类型
    - 绑定和事件
    - index 参数
    - 图片
  - 文件句柄
- `tkinter.ttk` --- Tk 风格的控件
  - ttk 的用法
  - ttk 控件
  - 控件
    - 标准属性
    - 可滚动控件的属性
    - 标签控件的属性
    - 兼容性属性
    - 控件状态
    - ttk.Widget
  - Combobox
    - 属性
    - 虚拟事件
    - ttk.Combobox
  - Spinbox
    - 属性
    - 虚拟事件
    - ttk.Spinbox
  - Notebook
    - 属性
    - Tab 属性
    - Tab ID
    - 虚拟事件
    - ttk.Notebook
  - Progressbar
    - 属性
    - ttk.Progressbar
  - Separator
    - 属性
  - Sizegrip
    - 与平台相关的注意事项
    - Bug
  - Treeview
    - 属性
    - 数据项的属性
    - tag 属性
    - 列标识
    - 虚拟事件
    - ttk.Treeview
  - Ttk 样式
    - 布局
- `tkinter.tix` --- TK扩展包
  - 使用 Tix
  - Tix 部件
    - 基本部件
    - 文件选择器
    - 层级式列表框
    - 表格式列表框
    - 管理器部件
    - 图像类型
    - 其他部件
    - 表单布局管理器
  - Tix 命令
- `tkinter.scrolledtext` --- 滚动文字控件
- IDLE
  - 目录
    - 文件菜单 （命令行和编辑器）
    - 编辑菜单（命令行和编辑器）
    - 格式菜单（仅 window 编辑器）
    - 运行菜单（仅 window 编辑器）
    - Shell 菜单（仅 window 编辑器）
    - 调试菜单（仅 window 编辑器）
    - 选项菜单（命令行和编辑器）
    - Window 菜单（命令行和编辑器）
    - 帮助菜单（命令行和编辑器）
    - 上下文菜单
  - 编辑和导航
    - 编辑窗口
    - 按键绑定
    - 自动缩进
    - 完成
    - 提示
    - 代码上下文
    - Python Shell 窗口
    - 文本颜色
  - 启动和代码执行
    - 命令行语法
    - 启动失败
    - 运行用户代码
    - Shell中的用户输出
    - 开发 tkinter 应用程序
    - 在没有子进程的情况下运行
  - 帮助和偏好
    - 帮助源
    - 首选项设置
    - macOS 上的IDLE
    - 扩展
- 其它的 GUI