Tkinter教程:如何在窗口内显示内容(计算器实例)(2026-07-23)

Python的Tkinter库是创建桌面应用的最简单方式之一。很多人学完基础语法后,却卡在“如何把代码变成看得见的窗口”这一步。本文将通过一个计算器实例,让你彻底掌握在窗口内显示内容的3个核心方法。

为什么Tkinter值得学?

根据2025年Python开发者调查,Tkinter仍然是入门GUI开发的首选库:

核心概念:Widget(控件)与布局

2.1 显示内容的三兄弟

在Tkinter中,所有“显示”操作都依赖以下三种控件:

控件 用途 适合场景
Label 显示静态文本/图片 标题、说明文字
Entry 单行输入框 用户输入数字/文本
Text 多行文本框 显示日志、计算结果

2.2 布局管理器(关键)

如果不使用布局管理器,控件会“堆”在一起。核心有三种:

实战:制作一个简单计算器

步骤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()来防止代码注入。

数据显示的进阶技巧

  1. 格式化显示:计算器的数字对齐使用justify="right",符合人类阅读习惯
  2. 状态控制:通过display.config(state="normal"/"readonly")临时切换编辑权限
  3. 动态刷新:使用update()方法强制刷新UI(如进度条场景)

行动号召

现在就打开你的Python环境,把上面代码粘贴运行吧!10分钟就能做出第一个桌面应用。如果你想学习更复杂的布局(如科学计算器),可以关注后续的《Tkinter高级布局教程》。


免责声明:本文中的计算器代码仅用于教学目的。实际开发中,使用eval()执行算术表达式存在安全风险,建议替换为ast.literal_eval()或自定义解析器。作者不对因使用本教程代码导致的任何损失承担责任。