Python GUI 开发:Tkinter 完全指南
Python 提供多种 GUI 开发选项,主要包括:
- Tkinter:Python 标准自带的 Tk GUI 工具包接口,本章重点讲解。
- wxPython:wxWindows 的开源 Python 接口,https://wxpython.org。
- JPython:Python 移植到 Java,提供无缝访问本地 Java 类库,https://www.jython.org。
网上还有许多其他接口可供探索。
Tkinter 编程
Tkinter 是 Python 标准 GUI 库。Python 结合 Tkinter 提供快速简便的 GUI 应用创建方式。Tkinter 面向对象封装了 Tk GUI 工具包。
创建 GUI 应用步骤:
- 导入
Tkinter模块。 - 创建主窗口。
- 添加一个或多个控件(Widget)。
- 进入主事件循环响应用户触发的事件。
示例
#!/usr/bin/python
import Tkinter
top = Tkinter.Tk()
# 此处添加控件代码...
top.mainloop()
创建如下窗口:

Tkinter 控件
Tkinter 提供按钮、标签、文本框等控件,统称为 Widget。目前有 15 种核心控件(扩展后共 19 种),下表简要说明:
| 序号 | 控件及说明 |
|---|---|
| 1 | Button:显示按钮。 |
| 2 | Canvas:绘制线条、椭圆、多边形、矩形等图形。 |
| 3 | Checkbutton:复选框,可多选。 |
| 4 | Entry:单行文本输入框。 |
| 5 | Frame:容器控件,组织其他控件布局。 |
| 6 | Label:单行标签,可含图片。 |
| 7 | Listbox:列表选项供用户选择。 |
| 8 | Menubutton:显示菜单按钮。 |
| 9 | Menu:提供命令列表,包含在 Menubutton 中。 |
| 10 | Message:多行文本显示。 |
| 11 | Radiobutton:单选按钮,互斥选择。 |
| 12 | Scale:滑块控件。 |
| 13 | Scrollbar:为列表框等添加滚动能力。 |
| 14 | Text:多行文本显示/编辑。 |
| 15 | Toplevel:独立顶层窗口容器。 |
| 16 | Spinbox:Entry 变体,从固定值中选择。 |
| 17 | PanedWindow:可包含多个水平或垂直排列面板的容器。 |
| 18 | LabelFrame:带标签的框架容器,用于复杂布局分隔。 |
| 19 | tkMessageBox:显示消息对话框的模块。 |
下面详细学习这些控件。
标准属性
控件通用属性:尺寸、颜色、字体、锚点、边框样式、位图、光标。
- 尺寸
- 颜色
- 字体
- 锚点
- 边框样式
- 位图
- 光标
几何管理
所有 Tkinter 控件可访问几何管理方法,用于在父控件区域组织布局。Tkinter 暴露三大几何管理器:pack、grid、place。
- pack():将控件组织成块再放入父控件。
- grid():以表格结构组织控件。
- place():在父控件指定绝对位置放置控件。
下面简要学习几何管理方法。
Python
- 精通Python数据类型:实战指南
- 精通Python运算符:全面指南
- 精通Python Pass语句:实战指南
- 精通Python函数参数:位置、关键字与默认参数
- 精通 Python 字典:创建、操作与进阶技巧
- 精通 Python 面向对象编程:类、继承、封装与多态
- 精通 Python 迭代器:工作原理与自定义构建
- Python 闭包详解:嵌套函数如何捕获变量
- 精通 Python datetime:日期、时间与时区实战指南
- 精通 Python time.sleep():最佳实践、多线程与实战案例
- Python 网络编程:掌握 Socket 与高级协议
- Python 多线程编程精通:高效并发技术全解析