前言:本文讲述的是如何利用python编程制作一个适用于指定行业的计算器,方便计算结果,涵盖的知识点由Python编写GUI界面程序,利用爬虫采集实时的汇率数据,将Python文件打包成可以单独运行的exe文件。
首先,分析我们的需求,编写一个适用于指定行业的计算器,这里我们用到的计算公式很简单,就是淘宝提供的金石定价公式,如下图所示
这里可以看到这个计算公式还是蛮简单的,对于Python来说也就是一行代码的事,那么我们就开始着手写代码,首先搭建我们的页面布局,这里我们采用的是tkinter,这个框架在画GUI方面还是很简单方便的,首先给大家展示下我的最终布局,如下图所示
其实也不是很好看,不过我已经尽我所能去美化了,其实功能很简单,就是几个输入框,两个按钮,点击计算按钮,获取输入框中的值,通过Python代码计算结果,最后将计算结果写入指定的输入框中,关于tkinter的组件介绍,可以自行百度,我这里就直接上代码了
其中重置按钮是为了清除输入的错误数据,绑定的事件就用command=self.selectFile这行代码来指定,这样就可以绑定到selectFile这个函数上,这个函数的代码如下所示
defselectFile(self):self.entry1.delete(0,"end")self.entry4.delete(0,"end")self.entry6.delete(0,"end")self.entry1.insert('end',0)self.entry4.insert('end',0)self.entry6.insert('end',0)然后计算按钮是为了执行计算操作,这里我们采用了线程的方式进行绑定,也就是异步执行,不会卡住,避免因计算量过大导致程序假死的现象,绑定的方式是command=lambda:self.thread_it(self.startAction)
绑定的函数如下所示
defstartAction(self):A=self.entry1.get()print(A)B=self.entry2.get()print(B)C=self.entry3.get()print(C)D=self.entry4.get()print(D)E=self.entry5.get()print(E)F=self.entry6.get()print(F)G=self.entry7.get()print(G)H=self.entry8.get()print(H)I=self.entry9.get()print(I)J=self.entry10.get()print(J)result=((float(A)*float(B)*float(C))+(float(D)*float(E))+(float(F)*float(G))+(float(H)+float(I)))*float(J)USDCNY,SGDCNY,JPYCNY=self.getRate()USDCNY_result=result/USDCNYSGDCNY_result=result/SGDCNYJPYCNY_result=USDCNY_result*JPYCNYself.entry0.delete(0,"end")self.entry0.insert('end',str(round(result,2)))self.entry11.delete(0,"end")self.entry11.insert('end',str(round(USDCNY_result,2)))self.entry12.delete(0,"end")self.entry12.insert('end',str(round(SGDCNY_result,2)))self.entry13.delete(0,"end")self.entry13.insert('end',str(round(JPYCNY_result,2)))@staticmethoddefthread_it(func,*args):t=threading.Thread(target=func,args=args)t.setDaemon(True)t.start()至此基本完成了,不过完成的软件是这样的,如下所示
可以看到比较明显的差异在计算结果那块,因为后面和客户沟通了,他需要其他币种的计算结果,所以后面就增加了几种结果,这里就用到了爬虫技术去采集实时的汇率,这里直接奉上了代码,直接解析的接口数据,所以很简单