我正在参加「掘金·启航计划」
tkinter设计界面计算模型实例
用tkinter设计一个完整的可视化工具是python初学者应熟练掌握的基本技能。下面以我编写的营销分配测算工具为例作一简要分析。
设计这样一个小脚本大体分为导入库文件和构造功能函数两大部分。构造函数是主要部分。以上图为例,共有4个函数,分别是对象初始化函数、收入分配计算函数、退出函数和设置界面函数。
初始化函数是创建对象时立即调用的统领函数,通常全局变量放在这里。
收入分配计算函数是根据用户的分配方案编写的函数,主要是计算方法。这里对应的是“计算”按钮,点击运行它可计算并数计算结果。
退出函数这里对应的是“取消”按钮,点击运行它即可终止运行,退出显示窗口。
界面函数的功能主要构造显示我们看到的上图这个窗体。它控制着控件的布局位置、大小、颜色、显示顺序等。
以下是这个小工具的全部代码,供大家参考。
# --*--coding:utf-8--*--
import tkinter as tk
from tkinter import *
from tkinter import messagebox
# 文件主方法
class SaleDistribution(tk.Tk):
# 对象初始化函数
def __init__(self):
super().__init__()
self.title('营销分配测算工具')
self.configure(bg="#ADFEDC")
self.price = IntVar()
self.sl =IntVar()
self.face()
self.geometry('600x300')
# 收入分配计算函数
def count(self):
global lb1
price=int(self.price.get())
sl=int(self.sl.get())
if sl<=5:
qbsr=sl*price;xstc=sl*1000;kfz=sl*800;jyz=qbsr-(xstc+kfz)
elif 10>=sl>5:
qbsr=sl*price;xstc=sl*1200-(5*200);kfz=sl*800;jyz=qbsr-(xstc+kfz)
elif 50>=sl>10:
qbsr=sl*price;xstc=sl*1400-(5*400+5*200);kfz=sl*800;jyz=qbsr-(xstc+kfz)
elif 100>=sl>50:
qbsr=sl*price;xstc=sl*1700-(5*700+5*500+40*300);kfz=sl*800;jyz=qbsr-(xstc+kfz)
elif sl>100:
qbsr=sl*price;xstc=sl*2000-(5*1000+5*800+40*600+50*300);kfz=sl*800;jyz=qbsr-(xstc+kfz)
result=(f'销售价格为{price}元。目前销售数量为{sl}套,全部收入为{qbsr}元。\n其中:销售提成{xstc}元,开发收入{kfz}元,经营留存{jyz}元')
lb1.config(text=result)
# 退出函数
def close(self):
if messagebox.askokcancel("退出", "确定要退出吗?"):
self.destroy()
# 设置界面函数
def face(self):
global lb1
fm1=Frame(self,bg='green',width=450)
fm1.pack(pady=6)
fm2=Frame(self,bg='pink',width=450,height=80)
fm2.pack(pady=6)
fm3=Frame(self,width=450,height=30,bg='red')#ADFEDC
fm3.pack(pady=16)
fm4=Frame(self,width=450,height=30,bg='gold')
fm4.pack(pady=6)
lb1=Label(fm1,text='这里显示测算结果',bg='#ADFEDC',height=6,font=('黑体',13))
lb1.pack(pady=1)
lb2=Label(fm2,text='请输入销售价格')
lb2.pack(side='left')
text1=Entry(fm2,textvariable=self.price,width=6,bg='#E1FFFF')
text1.pack(side='left',padx=6)
lb3=Label(fm2,text='请输入销售数量')
lb3.pack(side='left')
text2=Entry(fm2,textvariable=self.sl,width=6,bg='#E1FFFF')
text2.pack(side='left',padx=6)
btn1=Button(fm4,text='取消',command=self.close)
btn1.pack(side='left')
lb4=Label(fm4,width=6,bg='#ADFEDC')
lb4.pack(side='left')
btn2=Button(fm4,text='计算',command=self.count)
btn2.pack(side='right')
if __name__=='__main__':
SaleDistribution=SaleDistribution()
SaleDistribution.mainloop()
需要说明的是本例中数据都是演示数据。若用于实际工作,还请大家自己修改收入分配计算函数。