Tkinter教程:如何在窗口内显示内容(计算器实例)(2026-07-23)
Python的Tkinter库是创建桌面应用的最简单方式之一。很多人学完基础语法后,却卡在“如何把代码变成看得见的窗口”这一步。本文将通过一个计算器实例,让你彻底掌握在窗口内显示内容的3个核心方法。
为什么Tkinter值得学?
根据2025年Python开发者调查,Tkinter仍然是入门GUI开发的首选库:
- 无需安装第三方库(内置在Python标准库中)
- 打包后体积仅3-5MB
- 支持Windows、macOS、Linux跨平台运行
核心概念:Widget(控件)与布局
2.1 显示内容的三兄弟
在Tkinter中,所有“显示”操作都依赖以下三种控件:
| 控件 | 用途 | 适合场景 |
|---|---|---|
| Label | 显示静态文本/图片 | 标题、说明文字 |
| Entry | 单行输入框 | 用户输入数字/文本 |
| Text | 多行文本框 | 显示日志、计算结果 |
2.2 布局管理器(关键)
如果不使用布局管理器,控件会“堆”在一起。核心有三种:
pack():自动排列(简单但控制力弱)grid():网格布局(推荐用于计算器)place():绝对定位(适合精确控制)
实战:制作一个简单计算器
步骤1:创建窗口并显示数字
import tkinter as tk
window = tk.Tk()
window.title("简单计算器")
window.geometry("300x400") # 宽度x高度
# 显示计算过程的文本框(只读)
display = tk.Entry(window, font=("Arial", 20), justify="right", state="readonly")
display.grid(row=0, column=0, columnspan=4, sticky="nsew", padx=5, pady=5)
步骤2:添加数字按钮并绑定事件
# 点击按钮后,在显示框追加数字
def press_number(num):
display.config(state="normal") # 临时允许编辑
display.insert("end", str(num))
display.config(state="readonly")
# 创建数字按钮1-9
for i in range(1, 10):
btn = tk.Button(window, text=str(i), font=("Arial", 16),
command=lambda x=i: press_number(x))
btn.grid(row=(i-1)//3 + 2, column=(i-1)%3, sticky="nsew", padx=2, pady=2)
步骤3:计算结果与清空功能
def calculate():
try:
result = eval(display.get()) # 实际项目中请用安全方法
display.config(state="normal")
display.delete(0, "end")
display.insert(0, str(result))
display.config(state="readonly")
except:
display.config(state="normal")
display.delete(0, "end")
display.insert(0, "错误")
display.config(state="readonly")
# 添加运算符和等号按钮
operators = [("+", 4, 0), ("-", 4, 1), ("*", 4, 2), ("=", 4, 3)]
for text, row, col in operators:
cmd = calculate if text == "=" else lambda t=text: press_number(t)
btn = tk.Button(window, text=text, font=("Arial", 16), command=cmd)
btn.grid(row=row, column=col, sticky="nsew", padx=2, pady=2)
实用建议:生产环境中应使用
ast.literal_eval()代替eval()来防止代码注入。
数据显示的进阶技巧
- 格式化显示:计算器的数字对齐使用
justify="right",符合人类阅读习惯 - 状态控制:通过
display.config(state="normal"/"readonly")临时切换编辑权限 - 动态刷新:使用
update()方法强制刷新UI(如进度条场景)
行动号召
现在就打开你的Python环境,把上面代码粘贴运行吧!10分钟就能做出第一个桌面应用。如果你想学习更复杂的布局(如科学计算器),可以关注后续的《Tkinter高级布局教程》。
免责声明:本文中的计算器代码仅用于教学目的。实际开发中,使用
eval()执行算术表达式存在安全风险,建议替换为ast.literal_eval()或自定义解析器。作者不对因使用本教程代码导致的任何损失承担责任。