当前位置: 首页 > news >正文

【Python】Tkinter库实现GUI界面计算器

1、概述


        Tkinter库是一个可以制作和生成GUI界面的库,适合我们日常开发一些桌面工具,有了它我们的工作将会更加遍历,GUI界面避免了我们想使用带界面的工具,有不想画长时间去开发的过程。

        Tkinter库内部包含了像文本、单选按钮、文本框、文本域、图片上传、多选按钮、菜单、提示框、滚动条等多种控件,内部包含了pack、grid、place三种方便我们规范控件位置的布局方式,非常适合小白入手,简单的几个代码就可以实现界面效果。

下面是作者个人写的第一个GUI项目,一个带界面的计算器,下面附上代码,喜欢的话小伙伴们可以获取,别忘了给作者点个赞哈!

2、代码展示

计算器实现了几个功能

  1. 数字的加、减、乘、除、平方
  2. 对内容的求值、整数格式化,小数保留9位、退格、清空等功能

#首先需要安装pyinstall库

#在cmd命令行运行以下命令

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyinstall

接下来我们看代码部分

import tkinter as tk
from tkinter import messagebox
import reroot = tk.Tk()root.title('简易计算器')
root.geometry('400x500')root.resizable(False, False)
# 创建顶部文本框
# width=文本框宽度
# font=("字体",字号)
# state="disabled":文本框只读,normal为可写入
ent = tk.Entry(root,width=18,font=("Arial",30),state="normal")#30字号最多可写17个字
ent.grid(row=0,column=0,columnspan=4,padx=5,pady=20)lis = ["清空","退格","平方","待定","7","8","9","/","4","5","6","*","1","2","3","-","0",".","=","+"]# 处理数据显示函数
def click(entry,event):if event == "退格":entry.delete(len(entry.get()) - 1)elif event == "清空":entry.delete(0,tk.END)elif event == "平方":entry.insert(tk.END,"^")elif event == "待定":passelif len(entry.get()) >= 17:messagebox.showinfo(title="信息", message="输入位数已达上限!")else:if event == "=":result(entry)else:# e = entry.get()entry.insert(tk.END, event)# print(val)#计算结果函数
def result(entry):sas = entry.get().replace("^","**")try:# 获取文本框中的值# eval(值)函数,将字符串运算值转化为数字运算,例如"7+5"转为7+5=12val = eval(sas)except Exception as e:messagebox.showerror(title="出错了",message=f"运算错误!{e}")else:# print(str(val)[-2::])# 获取最后两位,判断是不是.0,如果是,则他为可以化成整数的小数,反之则保留小数endflag = str(val)[-2::]if endflag == ".0":# 若为.0结尾,则将其转为整数val = int(val)else:# 若是小数,则保留9位小数val = round(val,9)# passentry.delete(0,tk.END)entry.insert(tk.END,val)# 设置列权重,平分剩余空间
root.grid_columnconfigure(0, weight=1)
root.grid_columnconfigure(1, weight=1)
root.grid_columnconfigure(2, weight=1)
root.grid_columnconfigure(3, weight=5)
s = 0
# 外层循环控制行数
for i in range(1,6):# 内层循环控制列数for j in range(0,4):btn = tk.Button(root, text=f"{lis[s]}", width=10, height=4,font=("Arial",11),command=lambda idx=s:click(ent,lis[idx]))btn.grid(row=i, column=j, pady=0,sticky="ew")# 这个s是用来控制应该在按钮上渲染那个键的值s += 1root.mainloop()

3、效果展示


http://www.dtcms.com/a/392010.html

相关文章:

  • 茶叶在线销售与文化交流平台的设计与实现(java)
  • 中电金信 :MCP在智能体应用中的挑战与对策
  • AI智能体开发目前主要基于哪些方面?
  • 8.2-spring 事务-声明式事务(@Transactional原理)
  • 数据分类分级:数据安全与治理的核心框架
  • STM32---看门狗
  • 标签肽V5 tag,V5 Tag Peptide
  • Hello Robot Stretch 3 技术解析(上):极简结构与全身力感知如何加速科研?
  • FPGA学习
  • 栈序列:合法与非法判定法则
  • Postgresql17数据库中的扩展插件说明
  • pwn知识点——字节流
  • 39、AI Agent系统开发:智能代理的完整构建体系
  • Qt自定义标题栏拖动延迟问题解决方式分享
  • 招聘数字化转型如何落地?
  • 每日一题(10)
  • 费马小定理的证明
  • GPS和北斗导航信号特点一览表
  • 开发避坑指南(51):达梦数据库查看索引与建立索引的方法
  • Science Robotics最新研究:腿足机器人控制的革新性进展
  • CSP时间复杂度解析:从理论到实践
  • 手搓FOC-环路激励的实现
  • DNN人脸识别和微笑检测
  • 从API调用到UI效果:直播美颜SDK特效面具功能的集成实战
  • 神经网络学习笔记13——高效卷积神经网络架构ShuffleNet
  • MySQL双写缓冲区:数据安全的终极防线
  • 第八章 惊喜09 运维支持VS产品迭代
  • sward入门到实战(2) - 如何管理知识库
  • Vue: 依赖注入(Provide Inject)
  • nethunter 中文乱码解决