python如何使用tkinter做个简单的计算器
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇文章主要介绍了python如何使用tkinter做个简单的计算器,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。设计思路首先,导入我
千家信息网最后更新 2025年11月07日python如何使用tkinter做个简单的计算器设计思路
这篇文章主要介绍了python如何使用tkinter做个简单的计算器,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
设计思路
首先,导入我们需要的包 - tkinter,并通过 实例化一个 Tk 对象 创建窗口
因为我有点菜,目前还把控不好各组件的位置,所以窗口使用自动默认的大小
import tkinter as tkimport tkinter.messageboxwin = tkinter.Tk()win.title("计算器")win.mainloop()大致 规划 各组件的 位置
我的目标是做成这个样子(最终效果)

大致规划好位置后,我创建了 四个 Frame,如下
u1s1,感觉两三个就够了
# 承载提示信息与输入框的框架entry_frame = tk.Frame(win)# 承载运算符号的框架menu_frame = tk.Frame(win)# 承载数字的框架major_frame = tk.Frame(win)# 承载等号的框架cal_frame = tk.Frame(win)entry_frame.pack(side="top")menu_frame.pack(side="left")major_frame.pack()cal_frame.pack(side="right")
下面就做一个 输入框,分为两部分
一部分是汉字部分,提示信息,使用 Label 控件
一部分是输入框,使用 Entry 控件
t_label = tk.Label(entry_frame, text = "请输入 : ")t_label.pack(side='left')word_entry = tk.Entry( entry_frame, fg = "blue", # 输入字体颜色,设置为蓝色 bd = 3, # 边框宽度 width = 39, # 输入框长度 justify = 'right' # 设置对齐方式为靠右)word_entry.pack()
然后在下面的左侧 排列运算符号
for char in ['+', '-', '×', '÷']: myButton(menu_frame, char, word_entry)
其中,myButton 类实例化一个按钮,并且当点击按钮时,输入框会出现相应的文本
当时遇到了问题 - 点击按钮无法获得争取的按钮上的文本你, 解决后写了一篇博客,传送门
用相同的办法 列举各个数字
for i in range(4): num_frame = tk.Frame(major_frame) num_frame.pack() if i < 3: for count in range(3*i+1, 3*i+4): myButton(num_frame, count, word_entry, side=(i, count)) continue myButton(num_frame, 0, word_entry, side=(i, 0))
当然,重置按钮和计算按钮 可不能忘
最后的计算就懒了一点,直接使用 entry.get() 获得要计算的式子,使用 eval() 函数计算,如果格式错误即弹窗提示
def calculate(entry): try: result = entry.get() # 如果输入框中不存在字符串,则 = 按钮不管用 if result == '': return result = eval(result) entry.delete(0, "end") entry.insert(0, str(result)) except: tkinter.messagebox.showerror("错误", "格式错误!\n请重新输入!")reset_btn = tk.Button( cal_frame, text = '重置', activeforeground = "blue", activebackground = "pink", width = "13", command = lambda :word_entry.delete(0, "end")).pack(side="left")result_btn = tk.Button( cal_frame, text = '=', activeforeground = "blue", activebackground = "pink", width = "13", command = lambda :calculate(word_entry)).pack(side="right")全部代码
major.py
# -*- coding=utf-8 -*-# @Time : 2021/3/4 13:06# @Author : lhys# @FileName: major.pymyName = r''' Welcome, my master! My Name is : ____ ____ ____ ____ ____ ______________ | | | | | | | \ / | / / | | | | | | | \ / | / / | | | | | | | \ / | / / | | | | | | \ \_/ / / _______/ | | | |______| | \ / \ \ | | | | \ / \ \ | | | ______ | \ / \ \ | | | | | | \ / \________ \ | | | | | | | | / / | |_______ | | | | | | / / | | | | | | | | / / |____________| |____| |____| |_____| /______________/ '''print(myName)import tkinter as tkfrom tools import *win = tk.Tk()win.title('计算器')entry_frame = tk.Frame(win)menu_frame = tk.Frame(win)major_frame = tk.Frame(win)cal_frame = tk.Frame(win)entry_frame.pack(side="top")menu_frame.pack(side="left")major_frame.pack()cal_frame.pack()# 输入框t_label = tk.Label(entry_frame, text = "请输入 : ")t_label.pack(side='left')word_entry = tk.Entry( entry_frame, fg = "blue", bd = 3, width = 39, justify = 'right')word_entry.pack()# 菜单栏for char in ['+', '-', '×', '÷']: myButton(menu_frame, char, word_entry)button_side = ['right', 'left']for i in range(4): num_frame = tk.Frame(major_frame) num_frame.pack() if i < 3: for count in range(3*i+1, 3*i+4): myButton(num_frame, count, word_entry, side=(i, count)) continue myButton(num_frame, 0, word_entry, side=(i, 0))reset_btn = tk.Button( cal_frame, text = '重置', activeforeground = "blue", activebackground = "pink", width = "13", command = lambda :word_entry.delete(0, "end")).pack(side="left")result_btn = tk.Button( cal_frame, text = '=', activeforeground = "blue", activebackground = "pink", width = "13", command = lambda :calculate(word_entry)).pack(side="right")win.mainloop()tools.py
# -*- coding=utf-8 -*-# @Time : 2021/3/4 13:20# @Author : lhys# @FileName: tools.pyimport tkinterimport tkinter.messageboxdef calculate(entry): try: result = entry.get() if result == '': return result = eval(result) print(result) entry.delete(0, "end") entry.insert(0, str(result)) except: tkinter.messagebox.showerror("错误", "格式错误!\n请重新输入!")class myButton(): def __init__(self, frame, text, entry, **kwargs): side = kwargs.get('side') if 'side' in kwargs else () self.btn = tkinter.Button( frame, text = text, activeforeground="blue", activebackground="pink", width="13", command=lambda :entry.insert("end", text) ) if side: self.btn.grid(row=side[0], column=side[1]) else: self.btn.pack()感谢你能够认真阅读完这篇文章,希望小编分享的"python如何使用tkinter做个简单的计算器"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!
输入
按钮
错误
计算器
框架
篇文章
位置
格式
提示
信息
实例
控件
数字
文本
符号
组件
部分
规划
运算
相同
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
平面设计好还是软件开发好
软件开发的模型包括哪些
扒手数据库设计
bind 数据库
pc怎么用服务器内存
jdk没有带db数据库
浙江搜道网络技术
对于数据库的了解和认识
手机的基岩版怎么加入服务器
徐州互联网软件开发业务流程
服务器搭建泰拉瑞亚服务器
边缘应用服务器
自动导入订单数据库
王者荣耀换服务器后不能加好友
上海联想服务器维修费用
湖南企业党建软件开发系统
大专专业软件开发
高中网络技术视图显示比例
有没有免费的代理服务器
特种网络技术代理商
pc应用软件开发工具
电脑服务器购买
武汉远光软件数据库开发
计算机网络技术专门烧钱吗
戴尔服务器idrac红灯
浙江品牌网络技术费用是多少
hp 服务器优势
软件开发场景题
软件开发操作可行性是指什么
对数据库表的修改语句