Python综合练习:做个窗口化的记账软件,快速简单

编程的练习都源自生活,今天我们用Python的窗口Tkinter快速做一个记账软件,不会使用Tkinter的朋友也可以快速了解。

一 记账软件知识点

为了让Python初学者学会更多的知识,综合的掌握Python,这个软件特地加入了如下的Python知识点,

我这是都是原创,你在其他地方是肯定找不到同样的、适合Python初学者的记账软件

  1. 循环及条件语句
  2. 常用命令的使用
  3. 列表及常用命令的使用
  4. 字典及常用命令的使用
  5. 函数及返回值
  6. 文件的打开与保存
  7. 异常错误处理
  8. Tkinter窗口的入门使用

二 Python版记账软件的功能实现

1.实现如下记账窗口

2.输入数据,并判断
1)日期是否为数字格式
2)日期位数是否正确
3)必输入项目是否为空
4)价格是否为数字

3.将数据保存到文件
4.控件内容清空及激活焦点

三 重点功能讲解

  1. 建立窗口
# 导入 tkinter 模块,并简写为 tk
import tkinter as tk
# 创建主窗口
root = tk.Tk()
# 设置窗口标题
root.title("记账程序")
# 设置窗口大小和屏幕位置
#(宽x高+x偏移+y偏移)
root.geometry('300x250+750+250')    

其他代码写在这里

# 启动 GUI 主事件循环
# 最后一行
root.mainloop()
  1. 显示一行:标签+文本输入框
#为了将标签和文本框显示在一行
#窗口中建立一个容器F1,放在root窗口中
F1 = tk.Frame(root)   
#F1显示,与上下的间距5 像素
F1.pack(pady=5) 

# 添加字段标签,放在F1窗口中
# 内容为日期工,左对齐
tk.Label(F1, text=“日期").pack(side="left", padx=5)

# 建立文本框控件,显示在F1中
e = tk.Entry(F1)
e.pack()
  1. 单选按钮的显示
# 创建 StringVar 变量用于记录“收支”选择(收入/支出)
choice = tk.StringVar()
# 默认选中“收入”
choice.set("收入")  

# 使用两个单选按钮(Radiobutton)表示收入/支出
tk.Radiobutton(F1, text="收入", variable=choice, value="收入").pack(side="left", padx=10)
tk.Radiobutton(F1, text="支出", variable=choice, value="支出").pack(side="left", padx=10) 
  1. 下拉菜单的使用
# 定义分类下拉选项
list_lei = ["餐饮", "交通", "购物", "娱乐", "工资", "转账", "其他"]
# 用于绑定 Combobox 的当前值
lei = tk.StringVar()  
# 默认选中第一个分类:“餐饮”
lei.set(list_lei[0]) 

# 使用只读下拉框(Combobox)供用户选择分类
ttk.Combobox(F1, textvariable=lei, values=list_lei, state='readonly', width=17).pack()

  1. 按钮的使用
# “提交”按钮:调用 dataPro 函数处理并保存数据
tk.Button(F2, text=" 提 交 ", command=dataPro).pack(side="left", padx=25)

点击时执行dataPro函数,这个函数是咱自己定义的

  1. 控件的常用操作
# 获取“日期”输入框内容
riqi = 控件变量名.get()

#控件的激活,也就是光标闪烁的位置
控件变量名.focus()
  1. 信息弹窗的设置
# 从 tkinter 中导入messagebox(用于弹出提示框)
from tkinter import messagebox

#显示错误信息
messagebox.showerror("错误", "输入的日期不是8位,\n\n格式为20240506")

#显示提示信息
messagebox.showinfo("提示", "保存成功!")
  1. 异常处理的使用
# 尝试将“价格”转换为浮点数并保留两位小数
try:
    jia = round(float(jia.strip()), 2)
except:
    # 如果转换失败,说明不是有效数字
    messagebox.showerror("错误", "输入的价格应为整数或小数")
    dict_entry.get('价格').focus()
    #结束这个函数
    return
  1. 保存文件
with open("data.txt", 'a', encoding="utf-8") as f:
    f.write(s)  # 写入一行数据

四 源代码

程序源代码已上传,
包括完整的代码和注释,可直接运行

https://pan.baidu.com/s/1n3HkXAEncpoDjktvx7j69Q?pwd=4hxj 

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注