python如何使用tkinter做个简单的计算器
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要介绍了python如何使用tkinter做个简单的计算器,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。设计思路首先,导入我
千家信息网最后更新 2026年11月01日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安全错误
数据库的锁怎样保障安全
上海挚品互联网科技有限公司
中关村互联网 科技集团
为想互联网科技
嘟嘟瓜互联网科技
云电互联网科技
科技互联网公司logo
互联网金融 科技创新
左右互联网络科技
互联网科技公司招聘
互联网保险科技创业
华夏恒生互联网科技013171
阿里互联网科技企业
互联网公司高科技产品
深圳互联网科技的发展
下一代互联网重大应用科技园
昆明中奇联合互联网科技
湖北辰鑫科技互联网
互联网科技手抄报图片
互联网科技职业技能培训学校
互联网科技品牌
咖啡豆
互联网科技园
米客互联网科技
长亮科技互联网金融
互联网科技创新企业排名
金融科技与互联网金融相同和不同
呼和浩特新华互联网科技学院
上海钢联属于互联网科技股吗
上海创道互联网络科技有限公司
重庆科技产业互联网有哪些