最近在外面租房准备考研,但是租房还得关系房租水电,一直手动算着好麻烦,就花几个小时做了一个计算电费的模型,现在只能依据每个用户的用电量和总电费计算每个人的电费并且显示出来。
记录了一下主要内容 :
1、计算每人需缴电费的函数(很简单的那种),总分费用=私人区域+公共区域
2、GUI布局,通过GUI文本输入框获取每户用电度数和总费用,然后计算出每人应摊出的费用
3、用pyinstaller生成一个可执行的.exe文件,方便随时打开使用
4、最后一小节新增了用openpyxl写的一个操作Excel的程序用来存储数据
一、电费计算函数
一般的合租房都会有私人的小卧室和公共区域两个地方,卧室的电费自己承担而公共区域的钱一般需要AA:
# 分户计算方式,a,b,c是三个用户的用电量,m_s是总电费
def calculate(a, b, c, m_s):
electricity_p = 0.49 # 电费单价
m1 = electricity_p * a
m2 = electricity_p * b
m3 = electricity_p * c
m_aver = (m_s - (m1 + m2 + m3)) / 3
m1 = m1 + m_aver
m2 = m2 + m_aver
m3 = m3 + m_aver
return m1, m2, m3
当然也可以根据自己的需要随时进行修改,GUI的主要计算也就是这一块了。
二、GUI布局&相关代码
最后希望用的就是这种有输入框和输出的GUI界面:
程序主要使用tkinter制作GUI界面,所以使用的主要组件包括标签Label、输入文本框Entry、按键Button,除了这些还用到了字符串变量StringVar获取输入文本。
标签Label用来显示文字,输入文本框Entry用来输入数据,按键Button用来触发计算动作也可以用来触发清除文本框动作,通过place函数控制一下组件显示位置,就能得到上图的布局。
在原版本的基础上加了点东西,可以进行输入文本框的计算,输入文本框的数据要用空格分隔开,用户电量这一栏输入两个数据(无顺序要求)就能算出电量,本月共缴费这一栏输入所有充值的金额可以自动算出来总金额。
最后输入三户应各自缴费的费用,精度保留到小数点后两位。
其中按键按下触发,需要执行的响应程序那块儿,我把想用的响应逻辑函数直接放到了按键代码上,方便修改or阅读。
源代码如下:
import tkinter
# 分户计算方式,a,b,c是三个用户的用电量,m_s是总电费
def calculate(a, b, c, m_s):
electricity = 0.49
m1 = electricity * a
m2 = electricity * b
m3 = electricity * c
m_aver = (m_s - (m1 + m2 + m3)) / 3
m1 = m1 + m_aver - 2.2
m2 = m2 + m_aver + 2.2
m3 = m3 + m_aver
return m1, m2, m3
# 输入文本框格式转换,string到float,支持空格分离数据
def sep_and_trans(string):
s_list = string.split()
f_list = []
for i in range(len(s_list)):
f_list.append(float(s_list[i]))
return f_list
def gui_cre():
# 创建主窗口
root = tkinter.Tk()
root.title("房租分摊费用")
# 设置窗口大小
root.geometry("400x170")
# 设置输入标签组件
labelName1 = tkinter.Label(root,
text='用户1用电: ',
justify=tkinter.RIGHT,
width=50)
labelName1.place(x=10, y=10, width=80, heig