tkinter设计界面计算模型实例

157 阅读3分钟

我正在参加「掘金·启航计划」

tkinter设计界面计算模型实例

用tkinter设计一个完整的可视化工具是python初学者应熟练掌握的基本技能。下面以我编写的营销分配测算工具为例作一简要分析。

img

设计这样一个小脚本大体分为导入库文件和构造功能函数两大部分。构造函数是主要部分。以上图为例,共有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()

需要说明的是本例中数据都是演示数据。若用于实际工作,还请大家自己修改收入分配计算函数。