用python写了一个简易的记账软件,后期有可能更新!
记账程序由来
曾经在iOS14的快截指令中写了一个快捷指令用来记账,但是由于快捷指令的限制,只能把数据记录到备忘录或者numbers,数据的迁移性很差。所以最后干脆用python写了一个程序
程序介绍
模块
此程序用到的模块较少,内容如下,缺失的模块请自行安装:
- openpyxl:xlsx文件读写常用的模块。
- datetime:日期模块,用来获取你记账的时间。
- tkinter:图形化模块,用来制作可视化操作界面。
- os:自带模块,操作文件,无需安装。
数据写入
新建文件同时,在首行写入标题,并把datetime获取的时间字符串赋值给a;把消费类型赋值给b,消费金额赋值给c。然后用append把a,b,c的数值追加到工作簿中。由于日期字段过长,这里预先把日期列设置列宽为20。
zb = openpyxl.Workbook()xf = zb.activexf['A1'] = '日期'xf['B1'] = '消费类型'xf['C1'] = '消费金额'a = datetime.datetime.now()b = Entry1.get()c = Entry2.get()xf.append([a, b, c])xf.column_dimensions['A'].width = 20zb.save('个人账本.xlsx') 1234567891011
gui图形化界面
做了一个简单的界面,包括两个输入框加两个按钮。
jzr.title('记账本') jzr.geometry('300x120+700+300') label1 = Label(jzr, text='消费种类:', font=('微软雅黑', 10), fg='green') label1.grid(row=0, column=0) label2 = Label(jzr, text='消费金额:', font=('微软雅黑', 10), fg='green') label2.grid(row=1, column=0) Entry1 = Entry(jzr, font=('微软雅黑', 12), width=16) Entry1.grid(row=0, column=1) Entry2 = Entry(jzr, font=('微软雅黑', 12), width=16) Entry2.grid(row=1, column=1) Button1 = Button(jzr, text='写入数据', font=('微软雅黑', 10), width=8, command=jzcx) Button1.grid(row=3, column=0, sticky=W) Button2 = Button(jzr, text='退出', font=('微软雅黑', 10), width=8, command=jzr.quit) Button2.grid(row=3, column=1, sticky=E) jzr.mainloop() 123456789101112131415
关于输入空值
如果输入框没有填写数据,则不记录数据,这里使用了一个if函数。
if con1 == '':messagebox.showinfo('提示', message='请输入消费类型')elif con2 == '':messagebox.showinfo('提示', message='请输入消费金额')else: 12345
新建工作簿
程序运行后,如果是首次运行,则会新建一个名为“个人账本”的工作簿,再写入数据;如果工作簿已存在,则读取并新增加数据。这里使用if结构,并且嵌套在上面的if判断语句中。
else:if os.path.exists('个人账本.xlsx'):filepath = '个人账本.xlsx'zb = openpyxl.load_workbook(filepath)xf = zb.activea = datetime.datetime.now()b = Entry1.get()c = Entry2.get()xf.append([a, b, c])xf.column_dimensions['A'].width = 20zb.save('个人账本.xlsx')messagebox.showinfo('提示', message='消费数据已记录完成')jzr.quit()else:zb = openpyxl.Workbook()xf = zb.activexf['A1'] = '日期'xf['B1'] = '消费类型'xf['C1'] = '消费金额'a = datetime.datetime.now()b = Entry1.get()c = Entry2.get()xf.append([a, b, c])xf.column_dimensions['A'].width = 20zb.save('个人账本.xlsx')messagebox.showinfo('提示', message='消费数据已记录完成')jzr.quit() 123456789101112131415161718192021222324252627
完整代码
import openpyxl from openpyxl import Workbook import datetime from tkinter import messagebox from tkinter import * import osjzr = Tk()jzr.title('记账本') jzr.geometry('300x120+700+300') label1 = Label(jzr, text='消费种类:', font=('微软雅黑', 10), fg='green') label1.grid(row=0, column=0) label2 = Label(jzr, text='消费金额:', font=('微软雅黑', 10), fg='green') label2.grid(row=1, column=0) Entry1 = Entry(jzr, font=('微软雅黑', 12), width=16) Entry1.grid(row=0, column=1) Entry2 = Entry(jzr, font=('微软雅黑', 12), width=16) Entry2.grid(row=1, column=1)def jzcx():con1 = Entry1.get()con1 = con1.strip()con2 = Entry2.get()con2 = con2.strip()if con1 == '':messagebox.showinfo('提示', message='请输入消费类型')elif con2 == '':messagebox.showinfo('提示', message='请输入消费金额')else:if os.path.exists('个人账本.xlsx'):filepath = '个人账本.xlsx'zb = openpyxl.load_workbook(filepath)xf = zb.activea = datetime.datetime.now()b = Entry1.get()c = Entry2.get()xf.append([a, b, c])xf.column_dimensions['A'].width = 20zb.save('个人账本.xlsx')messagebox.showinfo('提示', message='消费数据已记录完成')jzr.quit()else:zb = openpyxl.Workbook()xf = zb.activexf['A1'] = '日期'xf['B1'] = '消费类型'xf['C1'] = '消费金额'a = datetime.datetime.now()b = Entry1.get()c = Entry2.get()xf.append([a, b, c])xf.column_dimensions['A'].width = 20zb.save('个人账本.xlsx')messagebox.showinfo('提示', message='消费数据已记录完成')jzr.quit()Button1 = Button(jzr, text='写入数据', font=('微软雅黑', 10), width=8, command=jzcx) Button1.grid(row=3, column=0, sticky=W) Button2 = Button(jzr, text='退出', font=('微软雅黑', 10), width=8, command=jzr.quit) Button2.grid(row=3, column=1, sticky=E) jzr.mainloop()
完整代码获取点这里
用python写了一个简易的记账软件,后期有可能更新!相关推荐
- 用python写了一个简易的记账软件,后期有可能更新
用python写了一个简易的记账软件,后期有可能更新 记账程序由来 程序介绍 模块 数据写入 gui图形化界面 关于输入空值 新建工作簿 完整代码 记账程序由来 曾经在iOS14的快截指令中写了一个快 ...
- 用python写的一个简易的云音乐播放器
本人最近在学习python,在看了一些教程后,用python写了一个简单的云音乐播放器,下面把主要代码贴上来,其中用到了github上他人写的一个汉字转拼音的库,大家可以在github上找到. #co ...
- python9行代码_如何用9行Python代码编写一个简易神经网络
原标题:如何用9行Python代码编写一个简易神经网络 Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 学习人工智能时,我给自己定了一个目标--用Pyth ...
- python写机器人程序_用Python写的一个多线程机器人聊天程序
本人是从事php开发的, 近来想通过php实现即时通讯(兼容windows).后来发现实现起来特别麻烦, 就想到python.听说这家伙在什么地方都能发挥作用.所以想用python来做通讯模块...所 ...
- 用 python 写了一个日记本
写一个随机任务抽取器 一.前言 二.逻辑构思 2.1 目标实现 2.2 搭建开发环境 2.3 Pyinstaller 打包 三.效果展示 3.1 初始化和添加日记 3.2 查看日记 3.3 删除日记 ...
- python卖水果_小姨开水果店的,所以今天用Python写了一个水果店小系统!
原标题:小姨开水果店的,所以今天用Python写了一个水果店小系统! 前言 今天晚上才刚下班,小姨就提了我最爱吃的榴莲过来,说不吃就坏了. 我一眼就看破了她的用意,哈哈哈 我这个小姨也是一起长大的,她 ...
- 用Python写了一个电子考勤系统!
今天给大家分享一个比较有意思的Python应用,用 Python 写了一个电子考勤系统,源码已在文章全部给出,记得点赞收藏哦- 项目简介 学校现在需要实现一个电子考勤系统,考虑到你们班已经学过大数据应 ...
- 耗时半年,用 Python 写了一个电子考勤系统
今天给大家分享一个比较有意思的 Python 应用,用 Python 写了一个电子考勤系统,源码获取在下方文章中给出,记得点赞收藏哦- 文章目录 电子考勤完整代码 项目简介 答题要求 附加功能 导入模 ...
- 用 Python 写了一个电子考勤系统!
今天给大家分享一个比较有意思的Python应用,用 Python 写了一个电子考勤系统,源码已在文章全部给出,记得点赞收藏哦- 项目简介 学校现在需要实现一个电子考勤系统,考虑到你们班已经学过大数据应 ...
最新文章
- SCCM2012R2之二安装SQL Server
- 常用计算机主要硬件设备,个人计算机常用的输出设备41.计算机硬件的组成部分主要包括:...
- ODBC API 学习总结
- Linux 查看进程和删除进程
- OpenStack-Pike(一)
- 十字路口红绿灯plc程序_实例讲解红绿灯PLC程序设计方法
- java retry怎么用_java retry使用详解
- 【DFS】LeetCode 77. Combinations
- web 报表中电子图章 / 水印的轻松实现
- linux内核旋转屏幕,全志A33屏幕旋转(Android)
- 别浪费生活中灵光一闪的创意,发到实现网试试,万一实现了呢?
- org.w3c.dom。 XML解析 练习
- 订餐系统之按距离[根据经纬度]排序、搜索
- vue element 下拉框内容过长显示...鼠标悬浮显示全部
- MySQL由身份证衍生出的统计数据
- 诚之和:双11首战薇娅为什么输给了李佳琦?
- IDEA 打包 spark 程序 并在远程 hadoop HA 上运行测试
- 王自如与老罗的辩论赛谁赢了?!
- [FPGA 日常记录] #5 常见 FPGA 论坛排名 / 按活跃度
- 《元宇宙工程》新书正式出版 已上架京东淘宝等网上商城
热门文章
- mysql5.7.19收费》_mysql5.7.19安装
- Intellij IDEA 初学入门图文教程(一) —— 介绍、下载和安装
- python编程入门十三:递归
- SSM框架:Spring
- mysql统计重复次数并加序号_insert-mysql数据插入,计数时出现重复,序号不对
- 电影票小程序插件 电影票CPS插件 电影票微信小程序插件
- 【 Visual C++】游戏开发笔记之二——最简单的DirectX,vc窗口的编写
- CentOS7图形界面与命令行界面(Terminal)切换
- 推荐5款自学手机APP,请低调收藏,让你变得越来越优秀
- 败光370亿后,聚美优品踏上新的不归路?