首页 > 其他分享 >2024.06.03

2024.06.03

时间:2024-06-12 14:46:43浏览次数:15  
标签:box 03 2024.06 10 text zb jzr row

import os
import openpyxl
import datetime
from tkinter import *
from tkinter import messagebox

# Create the main window
jzr = Tk()
jzr.title('个人账本记录')
jzr.geometry('400x600')
jzr.config(bg='light yellow')
# Create a text box to display records
text_box = Text(jzr, font=('微软雅黑', 10), width=40, height=20)
text_box.grid(row=9, column=0, columnspan=2, padx=10, pady=10)
# Function to record expenses
def zcjl():
filepath = '个人账本.xlsx'
if os.path.exists(filepath):
zb = openpyxl.load_workbook(filepath)
else:
zb = openpyxl.Workbook()
zb.active['A1'] = '日期'
zb.active['B1'] = '类型'
zb.active['C1'] = '金额'

xf = zb.active
a = datetime.datetime.now()
b = Entry5.get()
c = Entry6.get()
xf.append([a, b, -float(c)]) # Save expense as negative value
zb.save(filepath)
messagebox.showinfo('提示', message='支出数据已记录完成')

# Clear text box content
text_box.delete('1.0', END)

# Display the expense record in the text box
text_box.insert(END, f'日期:{a}\n类型:{b}\n金额:{c}\n\n')

def srjl():
filepath = '个人账本.xlsx'
if os.path.exists(filepath):
zb = openpyxl.load_workbook(filepath)
else:
zb = openpyxl.Workbook()
zb.active['A1'] = '日期'
zb.active['B1'] = '类型'
zb.active['C1'] = '金额'

xf = zb.active
a = datetime.datetime.now()
b = Entry7.get()
c = Entry8.get()
xf.append([a, b, float(c)]) # Save income as positive value
zb.save(filepath)
messagebox.showinfo('提示', message='收入数据已记录完成')

# Clear text box content
text_box.delete('1.0', END)

# Display the income record in the text box
text_box.insert(END, f'日期:{a}\n类型:{b}\n金额:{c}\n\n')

# Create labels, entry fields, and button for expense tracking
label5 = Label(jzr, text='支出类型:', font=('微软雅黑', 10), fg='red')
label5.grid(row=4, column=0, padx=5, pady=5)
label6 = Label(jzr, text='支出金额:', font=('微软雅黑', 10), fg='red')
label6.grid(row=5, column=0, padx=5, pady=5)
Entry5 = Entry(jzr, font=('微软雅黑', 12), width=16)
Entry5.grid(row=4, column=1, padx=5, pady=5)
Entry6 = Entry(jzr, font=('微软雅黑', 12), width=16)
Entry6.grid(row=5, column=1, padx=5, pady=5)

# Button to record expenses
Button4 = Button(jzr, text='记录支出', font=('微软雅黑', 10), width=8, command=zcjl)
Button4.grid(row=6, column=0, columnspan=2, pady=10)

# Create labels, entry fields, and button for income tracking
label7 = Label(jzr, text='收入类型:', font=('微软雅黑', 10), fg='green')
label7.grid(row=10, column=0, padx=5, pady=5)
label8 = Label(jzr, text='收入金额:', font=('微软雅黑', 10), fg='green')
label8.grid(row=11, column=0, padx=5, pady=5)
Entry7 = Entry(jzr, font=('微软雅黑', 12), width=16)
Entry7.grid(row=10, column=1, padx=5, pady=5)
Entry8 = Entry(jzr, font=('微软雅黑', 12), width=16)
Entry8.grid(row=11, column=1, padx=5, pady=5)
# Button to record income
Button7 = Button(jzr, text='记录收入', font=('微软雅黑', 10), width=8, command=srjl)
Button7.grid(row=12, column=0, columnspan=2, pady=10)
# Create a button to query records
def query_records():
text_box.delete('1.0', END)
filepath = '个人账本.xlsx'
if os.path.exists(filepath):
zb = openpyxl.load_workbook(filepath)
xf = zb.active
for row in xf.iter_rows(min_row=2, values_only=True):
text_box.insert(END, f'日期:{row[0]}\n类型:{row[1]}\n金额:{row[2]}\n\n')
text_box.insert(END, '------------------------------------------\n')
else:
messagebox.showinfo('提示', message='暂无记录')

Button5 = Button(jzr, text='查询记录', font=('微软雅黑', 10), width=8, command=query_records)
Button5.grid(row=7, column=0, columnspan=2, pady=10)

# Calculate total income, expenses, and balance
def calculate_total():
total_income = 0
total_expenses = 0
filepath = '个人账本.xlsx'
if os.path.exists(filepath):
zb = openpyxl.load_workbook(filepath)
xf = zb.active
for row in xf.iter_rows(min_row=2, values_only=True):
if isinstance(row[2], int) or isinstance(row[2], float):
if row[2] > 0:
total_income += row[2]
else:
total_expenses += row[2]

balance = total_income + total_expenses
messagebox.showinfo('总收入支出', message=f'总收入: {total_income}\n总支出: {abs(total_expenses)}\n结余: {balance}')

Button6 = Button(jzr, text='计算总额', font=('微软雅黑', 10), width=8, command=calculate_total)
Button6.grid(row=8, column=0, columnspan=2, pady=10)

# Run the main loop
jzr.mainloop()

标签:box,03,2024.06,10,text,zb,jzr,row
From: https://www.cnblogs.com/dmx-03/p/18243904

相关文章

  • 2024.06.04《个人总结》
      (大二下)课程总结——软件工程 1)回顾你的课程计划(第一周的计划),你完成的程度如何?请列出具体数据和实际例子。  1.你在这门课的计划是什么?参考一些学校的教学,你对这个课程有什么期待?你打算怎样度过这个课程?    计划就是尽力跟上建民老师的节奏同时,还能主动学习......
  • 2024.06.05
    【题目描述】编写程序,使用牛顿迭代法求方程在x附近的一个实根。【练习要求】请给出源代码程序和运行测试结果,源代码程序要求添加必要的注释。【输入格式】请在一行中输入方程系数a、b、c、d和实数x,数据中间以空格为间隔。【输出格式】对每一组输入的数据,输出牛顿迭代法求出的实根(......
  • 2024.06.06
    完成概率论、计网作业并提交python实验:importrefromcollectionsimportCounterimportrequestsfromlxmlimportetreeimportpandasaspdimportjiebaimportmatplotlib.pyplotaspltfromwordcloudimportWordCloudheaders={"User-Agent":"Mozilla/5.0(Wi......
  • 【CMake系列】03-cmake 注释、常用指令 message、set、file、for_each、流程控制if
    本文给出了cmake中的一些常用的指令,可以快速了解,为后面的内容深入打点基础。本专栏的详细实践代码全部放在github上,欢迎star!!!如有问题,欢迎留言、或加群【392784757】交流注释#行注释#[[多行注释]]message(""#[[这里也可以注释]]"")message在学习时......
  • 03《android studio开发实战(第三版)》阅读笔记
    第四章:用户界面开发 本章介绍了Android中的常见布局管理器,如LinearLayout、RelativeLayout和ConstraintLayout,以及它们的使用场景和特点。 学习了各种用户界面元素,如TextView、EditText、Button等的使用方法,以及如何将它们组合在一起创建复杂的用户界面。理解了Android中的资源......
  • 系统FM802,FM803主控和利时
    系统FM802,FM803主控和利时接近开关通常有两种:埋入型和非埋入型。所谓埋入型就是指接近开关的感应头不检测其圆周方向的金属目标,系统FM802,FM803主控和利时即传感器感应头必须露出金属安装支架一段距离且圆周方向一定范围内不得有金属目标物以免引起错误判断。系统FM802,FM803......
  • FuTalk设计周刊-Vol.038
    ......
  • FlinkSQL 运行官网的 filesystem SQL 连接器例子出错:Cannot discover a connector usi
    我的例子程序是仿照官网例子写的:我的程序:packagecom.xxx.demo;importorg.apache.flink.streaming.api.datastream.DataStream;importorg.apache.flink.streaming.api.environment.StreamExecutionEnvironment;importorg.apache.flink.table.api.bridge.java.StreamTabl......
  • CH03_运算符
    CH03_运算符算术运算符作用:用于处理四则运算示例:#include<iostream>usingnamespacestd;intmain(){ inta=10; intb=3; cout<<a+b<<endl;//13 cout<<a-b<<endl;//7 cout<<a*b<<endl;//30 cout<<......
  • Vue 打包 Error: error:0308010C:digital envelope routines::unsupported
    这个错误通常与Node.js的加密模块和OpenSSL版本有关出现这个错误是因为node.jsV17版本中最近发布的OpenSSL3.0,而OpenSSL3.0对允许算法和密钥大小增加了严格的限制,可能会对生态系统造成一些影响.js/app.8d066b51.jsfromTerserError:error:0308010C:digitalenveloperout......