0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何使用Python制作一款计算器

Wildesbeast 来源:今日头条 作者:有趣的程序媛 2020-02-05 12:52 次阅读

1 ui设计

使用qt designer ,按装anaconda后,在如下路径找到:

conda3.05Libraryin

designer.exe文件,双击启动:

创建窗体,命名为XiaoDing,整个的界面如下所示:

私信小编01 领取完整项目代码

qt 设计器提供的常用控件基本都能满足开发需求,通过拖动左侧的控件,很便捷的就能搭建出如下的UI界面,比传统的手写控件代码要方便很多。

最终设计的计算器XiaoDing界面如下,

比如,其中一个用于计算器显示的对象:lcdNumber,对象的类型为:LCD Number。右侧为计算器中用到的所有对象。

2 转py文件

使用如下命令,将设计好的ui文件转为py文件

pyuic5 -o ./calculator/MainWindow.py ./calculator/mainwindow.ui

3 计算器实现逻辑

导入库:

fromPyQt5.QtGuiimport* fromPyQt5.QtWidgetsimport* fromPyQt5.QtCoreimport* importoperator fromMainWindowimportUi_MainWindow

主题代码逻辑很精简:

#Calculatorstate. READY=0 INPUT=1 classMainWindow(QMainWindow,Ui_MainWindow): def__init__(self,*args,**kwargs): super(MainWindow,self).__init__(*args,**kwargs) self.setupUi(self) #Setupnumbers. forninrange(0,10): getattr(self,'pushButton_n%s'%n).pressed.connect(lambdav=n:self.input_number(v)) #Setupoperations. self.pushButton_add.pressed.connect(lambda:self.operation(operator.add)) self.pushButton_sub.pressed.connect(lambda:self.operation(operator.sub)) self.pushButton_mul.pressed.connect(lambda:self.operation(operator.mul)) self.pushButton_div.pressed.connect(lambda:self.operation(operator.truediv))#operator.divforPython2.7 self.pushButton_pc.pressed.connect(self.operation_pc) self.pushButton_eq.pressed.connect(self.equals) #Setupactions self.actionReset.triggered.connect(self.reset) self.pushButton_ac.pressed.connect(self.reset) self.actionExit.triggered.connect(self.close) self.pushButton_m.pressed.connect(self.memory_store) self.pushButton_mr.pressed.connect(self.memory_recall) self.memory=0 self.reset() self.show()

基础方法:

definput_number(self,v): ifself.state==READY: self.state=INPUT self.stack[-1]=v else: self.stack[-1]=self.stack[-1]*10+v self.display() defdisplay(self): self.lcdNumber.display(self.stack[-1])

按钮RE,M, RE对应的实现逻辑:

defreset(self): self.state=READY self.stack=[0] self.last_operation=None self.current_op=None self.display() defmemory_store(self): self.memory=self.lcdNumber.value() defmemory_recall(self): self.state=INPUT self.stack[-1]=self.memory self.display()

+,-,x,/,/100对应实现方法:

defoperation(self,op): ifself.current_op:#Completethecurrentoperation self.equals() self.stack.append(0) self.state=INPUT self.current_op=op defoperation_pc(self): self.state=INPUT self.stack[-1]*=0.01 self.display()

=号对应的方法实现:

defequals(self): ifself.state==READYandself.last_operation: s,self.current_op=self.last_operation self.stack.append(s) ifself.current_op: self.last_operation=self.stack[-1],self.current_op try: self.stack=[self.current_op(*self.stack)] exceptException: self.lcdNumber.display('Err') self.stack=[0] else: self.current_op=None self.state=READY self.display()

main函数:

if__name__=='__main__': app=QApplication([]) app.setApplicationName("XiaoDing") window=MainWindow() app.exec_()

完整代码请参考点击阅读原文下载,代码只有100行。完整代码请点击文章最底部的【阅读原文】。启动后的界面如下:

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 计算器
    +关注

    关注

    16

    文章

    425

    浏览量

    36496
  • python
    +关注

    关注

    51

    文章

    4671

    浏览量

    83458
收藏 人收藏

    评论

    相关推荐

    苹果将为iPad推出原生计算器应用

    早前,IT之家曾披露,此次苹果还计划对macOS系统内的计算器应用进行功能升级,这是该软件近10年来的首次重大设计变革。据悉,苹果正在内部测试一款名为“GreyParrot”的全新计算器应用。
    的头像 发表于 04-24 14:10 33次阅读

    OpenHarmony开发案例:【分布式计算器

    使用分布式能力实现了一个简单的计算器应用,可以进行简单的数值计算,支持远程拉起另一个设备的计算器应用,两个计算器应用进行协同计算
    的头像 发表于 04-11 15:24 433次阅读
    OpenHarmony开发案例:【分布式<b class='flag-5'>计算器</b>】

    AWTK 开源串口屏开发(13) - 计算器应用

    计算器是一个常见的应用程序,在AWTK串口屏中,利用fscript表达式计算函数,无需编写一行传统的代码,即可实现一个简单的计算器应用程序。1.功能计算器是一个很常见的应用,比如在电子
    的头像 发表于 03-16 08:23 133次阅读
    AWTK 开源串口屏开发(13) - <b class='flag-5'>计算器</b>应用

    基于51单片机的简易计算器设计

    电子发烧友网站提供《基于51单片机的简易计算器设计.rar》资料免费下载
    发表于 01-12 10:50 0次下载

    基于51单片机的计算器设计

    电子发烧友网站提供《基于51单片机的计算器设计.rar》资料免费下载
    发表于 01-12 09:17 3次下载

    基于51单片机的计算器设计

    电子发烧友网站提供《基于51单片机的计算器设计.rar》资料免费下载
    发表于 01-03 11:33 1次下载

    基于51单片机的简易计算器设计

    基于51单片机的简易计算器设计(实物)
    发表于 01-02 10:02 0次下载

    pcb过孔电流计算器怎么用

    PCB过孔电流计算器是一种用于计算PCB板上过孔电流的工具。过孔是PCB板上的重要元件,用于连接不同层之间的电路。过孔的电流大小对于PCB板的性能和稳定性具有重要影响。因此,正确使用PCB过孔电流计算器
    的头像 发表于 12-14 16:20 2433次阅读

    分享一个高颜值开源计算器

    今天逛同性交友社区时发现一个高颜值的开源计算器,分享给大家,希望对大家有所帮助。
    的头像 发表于 08-22 15:22 966次阅读
    分享一个高颜值开源<b class='flag-5'>计算器</b>

    人工智能计算器好不好

    人工智能计算器好不好?这是一个非常值得探究的问题。在本文中,我们将探讨人工智能计算器的优点和缺点,同时也会分析它对我们日常生活和工作的影响。 首先,让我们来看看人工智能计算器的优点。第一个优点显然是
    的头像 发表于 08-15 16:07 936次阅读

    拆解透明计算器,小型高颜值、太阳能触屏、超薄、学生办公文具

    1 前言 近日,朋友在某宝上淘得一个透明计算器,小型超薄、高颜值、触屏、太阳能等字眼挺吸睛! 某宝该产品截图,图片来源于网络 朋友寄给我一个,那咱就研究研究,看看这小小的计算器里面
    的头像 发表于 06-25 08:46 2463次阅读
    拆解透明<b class='flag-5'>计算器</b>,小型高颜值、太阳能触屏、超薄、学生办公文具

    基于FPGA的披萨切片角度计算器

    电子发烧友网站提供《基于FPGA的披萨切片角度计算器.zip》资料免费下载
    发表于 06-16 11:47 0次下载
    基于FPGA的披萨切片角度<b class='flag-5'>计算器</b>

    DS1086L的频率计算器

    DS1086L是一款扩频经济振荡器™,可产生130kHz至66.6MHz的扩频方波输出。本应用笔记介绍了一个易于使用的频率计算器,用于设置所需的输出频率和抖动调制。
    的头像 发表于 06-12 10:12 451次阅读
    DS1086L的频率<b class='flag-5'>计算器</b>

    labview计算器

    labview计算器程序分享
    发表于 05-29 10:34 20次下载

    如何使用Wemos D1 mini制作一款简单但具有挑战性的游戏?

    我使用 Wemos D1 mini 制作一款简单但具有挑战性的游戏。 我尽量使说明尽可能详细,但如果您对此有任何疑问,请告诉我。 您所要做的就是将魔杖从电线的端拿到另端。它有
    发表于 05-23 06:14