记账程序由来

曾经在iOS14的快截指令中写了一个快捷指令用来记账,但是由于快捷指令的限制,只能把数据记录到备忘录或者numbers,数据的迁移性很差。所以最后干脆用python写了一个程序

程序介绍

模块

此程序用到的模块较少,内容如下,缺失的模块请自行安装:

  1. openpyxl:xlsx文件读写常用的模块。
  2. datetime:日期模块,用来获取你记账的时间。
  3. tkinter:图形化模块,用来制作可视化操作界面。
  4. 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写了一个简易的记账软件,后期有可能更新!相关推荐

  1. 用python写了一个简易的记账软件,后期有可能更新

    用python写了一个简易的记账软件,后期有可能更新 记账程序由来 程序介绍 模块 数据写入 gui图形化界面 关于输入空值 新建工作簿 完整代码 记账程序由来 曾经在iOS14的快截指令中写了一个快 ...

  2. 用python写的一个简易的云音乐播放器

    本人最近在学习python,在看了一些教程后,用python写了一个简单的云音乐播放器,下面把主要代码贴上来,其中用到了github上他人写的一个汉字转拼音的库,大家可以在github上找到. #co ...

  3. python9行代码_如何用9行Python代码编写一个简易神经网络

    原标题:如何用9行Python代码编写一个简易神经网络 Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 学习人工智能时,我给自己定了一个目标--用Pyth ...

  4. python写机器人程序_用Python写的一个多线程机器人聊天程序

    本人是从事php开发的, 近来想通过php实现即时通讯(兼容windows).后来发现实现起来特别麻烦, 就想到python.听说这家伙在什么地方都能发挥作用.所以想用python来做通讯模块...所 ...

  5. 用 python 写了一个日记本

    写一个随机任务抽取器 一.前言 二.逻辑构思 2.1 目标实现 2.2 搭建开发环境 2.3 Pyinstaller 打包 三.效果展示 3.1 初始化和添加日记 3.2 查看日记 3.3 删除日记 ...

  6. python卖水果_小姨开水果店的,所以今天用Python写了一个水果店小系统!

    原标题:小姨开水果店的,所以今天用Python写了一个水果店小系统! 前言 今天晚上才刚下班,小姨就提了我最爱吃的榴莲过来,说不吃就坏了. 我一眼就看破了她的用意,哈哈哈 我这个小姨也是一起长大的,她 ...

  7. 用Python写了一个电子考勤系统!

    今天给大家分享一个比较有意思的Python应用,用 Python 写了一个电子考勤系统,源码已在文章全部给出,记得点赞收藏哦- 项目简介 学校现在需要实现一个电子考勤系统,考虑到你们班已经学过大数据应 ...

  8. 耗时半年,用 Python 写了一个电子考勤系统

    今天给大家分享一个比较有意思的 Python 应用,用 Python 写了一个电子考勤系统,源码获取在下方文章中给出,记得点赞收藏哦- 文章目录 电子考勤完整代码 项目简介 答题要求 附加功能 导入模 ...

  9. 用 Python 写了一个电子考勤系统!

    今天给大家分享一个比较有意思的Python应用,用 Python 写了一个电子考勤系统,源码已在文章全部给出,记得点赞收藏哦- 项目简介 学校现在需要实现一个电子考勤系统,考虑到你们班已经学过大数据应 ...

最新文章

  1. SCCM2012R2之二安装SQL Server
  2. 常用计算机主要硬件设备,个人计算机常用的输出设备41.计算机硬件的组成部分主要包括:...
  3. ODBC API 学习总结
  4. Linux 查看进程和删除进程
  5. OpenStack-Pike(一)
  6. 十字路口红绿灯plc程序_实例讲解红绿灯PLC程序设计方法
  7. java retry怎么用_java retry使用详解
  8. 【DFS】LeetCode 77. Combinations
  9. web 报表中电子图章 / 水印的轻松实现
  10. linux内核旋转屏幕,全志A33屏幕旋转(Android)
  11. 别浪费生活中灵光一闪的创意,发到实现网试试,万一实现了呢?
  12. org.w3c.dom。 XML解析 练习
  13. 订餐系统之按距离[根据经纬度]排序、搜索
  14. vue element 下拉框内容过长显示...鼠标悬浮显示全部
  15. MySQL由身份证衍生出的统计数据
  16. 诚之和:双11首战薇娅为什么输给了李佳琦?
  17. IDEA 打包 spark 程序 并在远程 hadoop HA 上运行测试
  18. 王自如与老罗的辩论赛谁赢了?!
  19. [FPGA 日常记录] #5 常见 FPGA 论坛排名 / 按活跃度
  20. 《元宇宙工程》新书正式出版 已上架京东淘宝等网上商城

热门文章

  1. mysql5.7.19收费》_mysql5.7.19安装
  2. Intellij IDEA 初学入门图文教程(一) —— 介绍、下载和安装
  3. python编程入门十三:递归
  4. SSM框架:Spring
  5. mysql统计重复次数并加序号_insert-mysql数据插入,计数时出现重复,序号不对
  6. 电影票小程序插件 电影票CPS插件 电影票微信小程序插件
  7. 【 Visual C++】游戏开发笔记之二——最简单的DirectX,vc窗口的编写
  8. CentOS7图形界面与命令行界面(Terminal)切换
  9. 推荐5款自学手机APP,请低调收藏,让你变得越来越优秀
  10. 败光370亿后,聚美优品踏上新的不归路?