尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

Python-GUI-Project教程:手把手用Tkinter打造Python计算器应用,代码逐行讲解

Python-GUI-Project教程:手把手用Tkinter打造Python计算器应用,代码逐行讲解 Python-GUI-Project教程手把手用Tkinter打造Python计算器应用代码逐行讲解【免费下载链接】Python-GUI-ProjectA Repositry that contains 20 GUI Projects on python Tkinter项目地址: https://gitcode.com/gh_mirrors/py/Python-GUI-ProjectPython-GUI-Project是一个包含 20 个 Python Tkinter GUI 桌面应用的开源合集内置 3 个可直接运行的计算器实现。本教程带你逐行拆解 Tkinter 计算器应用的核心代码——从主窗口、显示区、按钮布局到 eval 求值逻辑新手 3 步即可跑通是学习 Python GUI 开发的绝佳入门项目。为什么从计算器开始学 Python Tkinter GUI计算器是学习Tkinter 图形界面开发最经典的练手项目代码量小、交互完整输入→按键→求值→显示能一次性覆盖窗口创建、布局管理、事件绑定三大核心知识点。Python-GUI-Project 仓库中提供了 3 个不同难度的计算器实现正好构成一条学习路径文件布局方式特点calculator/tk-calculator.pygrid 网格逐键定义最适合逐行学习calculator/calculator2.pypack 堆叠循环批量生成按钮仅 55 行calculator_with_images.pygrid 网格按钮使用图片图标更美观本教程以第一个tk-calculator.py为主进行逐行讲解其余两个在最后对比学习。环境配置3步运行Tkinter计算器应用Tkinter 是 Python标准库的一部分无需 pip 安装只需第 1 步安装 Python 3官网下载即可Windows/macOS 默认自带 Tkinter第 2 步克隆项目仓库git clone https://gitcode.com/gh_mirrors/py/Python-GUI-Project第 3 步运行计算器python calculator/tk-calculator.py⚠️ Linux 用户若提示ModuleNotFoundError: No module named _tkinter需先安装系统包sudo apt install python3-tk。窗口打开后就是一个支持 - * /和%取模的计算器输入表达式按出结果。下面拆解它是如何实现的。主窗口创建5行代码搞定Python计算器窗口root tk.Tk() root.geometry(170x230) root.title(Calculator) root.minsize(170, 230) root.maxsize(170, 230)对应源码tk-calculator.pytk.Tk()创建主窗口对象所有控件都挂在它下面geometry(170x230)设置窗口初始大小为 170×230 像素title()设置标题栏文字minsize()/maxsize()把窗口锁定为固定大小计算器不允许拖拽改变尺寸——Tk 类独有的方法其他控件没有 小技巧把maxsize/minsize去掉试试窗口就能自由缩放理解两者区别。显示区域构建Entry控件与grid布局参数inp Entry(root, width16, borderwidth3, reliefRIDGE) inp.grid(pady10, row0, stickyw, padx15)对应源码tk-calculator.pyEntry是单行输入框这里当作计算器显示屏使用参数作用width16输入框宽度字符数borderwidth3边框粗细 3 像素reliefRIDGE边框呈凸起立体感更像真实计算器row0放在第 0 行stickyw控件贴左边对齐w westgrid 是 Tkinter 三大布局管理器之一另两个是 pack 和 place按行/列单元格摆放控件非常适合计算器这种矩阵式按键布局。核心计算逻辑eval求值与异常处理逐行拆解这是整个计算器最关键的函数def result(): try: if inp.get() : inp.insert(end, error) elif inp.get()[0] 0: inp.delete(0, end) inp.insert(end, error) else: res inp.get() res eval(res) inp.insert(end, ) inp.insert(end, res) except SyntaxError: inp.insert(end, invalid input)对应源码tk-calculator.py逐行解读inp.get()取出显示屏上的表达式字符串如1234空输入或以0开头 → 直接显示error防止非法表达式eval(res)把字符串当作 Python 表达式求值1234变成整数46——这是 Tkinter 计算器教程中最常被引用的技巧inp.insert(end, )在末尾追加 46形成1234 46的显示效果except SyntaxError表达式不合法如12时不崩溃友好提示invalid input⚠️ 安全提示eval()会执行任意字符串仅适合本地学习项目。生产环境应改用ast.literal_eval或自己实现四则运算解析。按钮布局lambda闭包与grid网格完整对照每个按键就是一个Button以数字 9 为例nine Button(text9, width2, commandlambda: inp.insert(end, 9), borderwidth3, reliefRIDGE) nine.grid(row1, stickyw, padx15)对应源码tk-calculator.pycommandlambda: ...把点击行为绑定给按钮。lambda 匿名函数让每个按钮一行搞定不用为 16 个按键写 16 个函数inp.insert(end, 9)点击后往显示屏末尾插入字符grid(row1, padx15)定位到第 1 行左内边距 15 像素完整按键的 grid 布局对照表行号按键从左到右关键坐标row 0显示屏 C清除键L12-L13、L41-L42row 1987L45-L55row 2654-L58-L68row 3321*L72-L82row 4000./L85-L95row 5跨列%L97-L101每个按钮用不同的padx15/45/75/125横向错位模拟真实计算器键盘的间距节奏。启动应用mainloop事件循环root.mainloop()对应源码tk-calculator.pymainloop()启动事件循环窗口进入监听模式等待鼠标点击、键盘输入并分发给对应的command。这是所有 Tkinter 应用的最后一行缺少它窗口会一闪而过。至此一个完整的 Tkinter 计算器已拆解完毕。3个计算器实现对比学习跑通基础版后建议依次阅读另外两个实现各有所长① 紧凑版—— calculator2.py用StringVar变量绑定显示屏按键直接修改变量即可刷新省去get/delete/insert三步核心亮点用for 循环 字符串拆分一次性生成 16 个按钮for i in 987 654- 321* 0d./.split(): for char in i: button(frame2buttons, char, LEFT, ...)对应源码calculator2.py还支持百分号把50%自动改写成(50)/100*再求值逻辑见 calculator2.py② 图片按钮版—— calculator_with_images.py用PIL.ImageTk加载 50×50 的按键图片数字键全部换成图标素材在Calculator with Images/calculator_buttons_50x50/目录需要额外安装依赖pip install Pillow点击逻辑更经典用全局变量f_num暂存第一个数时根据maths标志位选择加减乘除见 calculator_with_images.py三种方案总结gridlambda 适合学习、pack循环适合精简代码、PIL 图片适合美化界面。Tkinter计算器运行常见问题排查症状原因与解决ImportError: No module named _tkinterLinux 未装 Tksudo apt install python3-tk按提示invalid input表达式不完整如只按了12属正常容错TclError报错表达式以运算符开头或连续运算符清空后重新输入想加新功能如开根号参考%键写法commandlambda: inp.insert(end,%)见 tk-calculator.py 进阶提醒tk-calculator.py 第 97 行用变量result接收按钮对象覆盖了前面第 19 行定义的result()函数名。这里能正常运行是因为commandresult在赋值前已捕获了函数但这是典型的命名冲突坏味道自己写代码时应避免。同仓库Python GUI项目继续探索Python-GUI-Project 不止有计算器以下项目都是 Tkinter 实战教材难度递进记事本notepad.py —— 菜单、文件读写绘图板paint.py —— Canvas 画布、鼠标事件钢琴piano.py —— 音频播放Piano1.mp3~Piano23.mp3 素材齐全天气查询weather.py —— 结合 API 的网络应用计费系统resturent.py —— 多 LabelFrame 分区 实时打印账单是网格布局的进阶范本下图正是仓库中 Tkinter GUI 项目的真实运行界面可以感受这类桌面应用成品的样子![Tkinter计算器与GUI桌面应用运行截图Python-GUI-Project仓库中的计费系统界面](https://raw.gitcode.com/gh_mirrors/py/Python-GUI-Project/raw/a317f828de0274d2feb15ece3e5edd91c44c3380/Billing System/Bill.PNG?utm_sourcegitcode_repo_files)此外仓库还包含一个结合 NewsAPI 的实时新闻头条应用Instant News Headlines (Tkinter NewsApi)/目录官方素材就使用了下图这类醒目的热点视觉元素适合作为 Tkinter 网络请求的综合进阶练习Python-GUI-Project新闻头条应用视觉素材HOT NEWS热点标签矢量插图/—Pngtree—vector%20creative%20hot%20news%20tag_4265321.png)完整项目清单见 README.md。建议路径先吃透本文的 Tkinter 计算器教程 → 对照 calculator2.py 精简重写 → 挑一个感兴趣的仓库项目动手改造你的 Python GUI 之路就正式开始了。【免费下载链接】Python-GUI-ProjectA Repositry that contains 20 GUI Projects on python Tkinter项目地址: https://gitcode.com/gh_mirrors/py/Python-GUI-Project创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表