一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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

Wildesbeast ? 來源:今日頭條 ? 作者:有趣的程序媛 ? 2020-02-05 12:52 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1 ui設計

使用qt designer ,按裝anaconda后,在如下路徑找到:

conda3.05Libraryin

designer.exe文件,雙擊啟動:

創(chuàng)建窗體,命名為XiaoDing,整個的界面如下所示:

私信小編01 領取完整項目代碼

qt 設計器提供的常用控件基本都能滿足開發(fā)需求,通過拖動左側的控件,很便捷的就能搭建出如下的UI界面,比傳統(tǒng)的手寫控件代碼要方便很多。

最終設計的計算器XiaoDing界面如下,

比如,其中一個用于計算器顯示的對象:lcdNumber,對象的類型為:LCD Number。右側為計算器中用到的所有對象。

2 轉py文件

使用如下命令,將設計好的ui文件轉為py文件

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

3 計算器實現(xiàn)邏輯

導入庫:

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對應的實現(xiàn)邏輯:

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對應實現(xiàn)方法:

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()

=號對應的方法實現(xiàn):

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函數(shù):

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

完整代碼請參考點擊閱讀原文下載,代碼只有100行。完整代碼請點擊文章最底部的【閱讀原文】。啟動后的界面如下:

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 計算器
    +關注

    關注

    16

    文章

    439

    瀏覽量

    38100
  • python
    +關注

    關注

    56

    文章

    4827

    瀏覽量

    86830
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    Qorvo全新設計計算器:晶振選型、能耗預算計算器和鏈路預算與覆蓋范圍計算器

    功能強大的PC端計算工具 。這些工具—— 晶振采購工具 、 能耗預算計算器 和 鏈路預算與覆蓋范圍計算器 ——讓優(yōu)化晶振選型、預測電池續(xù)航時間以及評估RF鏈路性能變得前所未有地簡單。
    的頭像 發(fā)表于 06-24 17:51 ?1001次閱讀
    Qorvo全新設計<b class='flag-5'>計算器</b>:晶振選型、能耗預算<b class='flag-5'>計算器</b>和鏈路預算與覆蓋范圍<b class='flag-5'>計算器</b>

    VirtualLab:衍射角計算器

    介質的折射率、結構的周期和入射角。這種相關性在數(shù)學上被編碼在光柵方程中。在這個用例中,我們介紹了VirtualLab Fusion的衍射角計算器,這是個用于計算光柵方程的方便工具。 打開衍射角
    發(fā)表于 06-16 08:48

    VirtualLab Fusion應用:相干時間和相干長度計算器

    摘要 在本用例中,我們介紹了計算器,它可以根據(jù)給定光源的波譜信息快速估計其時間相干特性。然后,可以將該計算器的結果自動復制到通用探測中,以便在考慮時間相干性時應用近似方法,而無
    發(fā)表于 04-08 08:48

    VirtualLab:衍射角計算器

    介質的折射率、結構的周期和入射角。這種相關性在數(shù)學上被編碼在光柵方程中。在這個用例中,我們介紹了VirtualLab Fusion的衍射角計算器,這是個用于計算光柵方程的方便工具。 打開衍射角
    發(fā)表于 04-08 08:46

    Made with KiCad(121):OpenRPNCalc 開源科學 RPN 計算器

    “? OpenRPNCalc 是一款基于 STM32 微控制的科學計算器。 ” Made with KiCad 系列將支持新的展示方式。直接將以下鏈接復制到瀏覽中(或點擊“閱讀原文
    的頭像 發(fā)表于 03-26 11:45 ?689次閱讀
    Made with KiCad(121):OpenRPNCalc 開源科學 RPN <b class='flag-5'>計算器</b>

    VirtualLab Fusion應用:相干時間和相干長度計算器

    摘要 在本用例中,我們介紹了計算器,它可以根據(jù)給定光源的波譜信息快速估計其時間相干特性。然后,可以將該計算器的結果自動復制到通用探測中,以便在考慮時間相干性時應用近似方法,而無需
    發(fā)表于 12-27 08:48

    Debye-Wolf積分計算器的用法

    即可進行計算。 該案例將說明如何在VirtualLab中使用Debye-Wolf積分計算器。 **建模任務 ** 開啟Debye-Wolf積分計算器 ?我們直接單擊計算器,然后選擇D
    發(fā)表于 12-26 08:59

    LP光纖模式計算器

    :漸變折射率 (GRIN) 光纖 光纖模式計算器允許定義線性偏振貝塞爾模式和線性偏振拉蓋爾模式。 對于 GRIN 光纖,定義了梯度常數(shù)。 然后通過下式計算折射率 與前種情況樣,
    發(fā)表于 12-18 13:36

    希望各位能推薦一款能夠制作卡拉OK混響器的芯片?

    希望各位能推薦一款能夠制作卡拉OK混響器的芯片。謝謝
    發(fā)表于 11-04 06:59

    使用DRV421進行設計:系統(tǒng)參數(shù)計算器

    電子發(fā)燒友網站提供《使用DRV421進行設計:系統(tǒng)參數(shù)計算器.pdf》資料免費下載
    發(fā)表于 10-26 09:52 ?1次下載
    使用DRV421進行設計:系統(tǒng)參數(shù)<b class='flag-5'>計算器</b>

    基于FPGA的計算器設計

    本文通過FPGA實現(xiàn)8位十進制數(shù)的加、減、乘、除運算,通過矩陣鍵盤輸入數(shù)據(jù)和運算符,矩陣鍵盤的布局圖如下所示。該計算器可以進行連續(xù)運算,當按下等號后,可以直接按數(shù)字進行下次運算,或者按運算符,把上次運算結果作為本次運算的第個操作數(shù)。
    的頭像 發(fā)表于 10-24 14:28 ?1293次閱讀
    基于FPGA的<b class='flag-5'>計算器</b>設計

    如果設計一款桌面的機器玩具,最吸引人的外觀與功能要有哪些?

    初步設想制作如下其中一款,有感興趣的朋友可以幫提提意見。 A一款圓敦敦的音響狀的“個人日程助手”,具備番茄鬧鐘、音樂播放、減壓交互、語言對話、工作日報生成。 B一款迷你瓦利機器人,有
    發(fā)表于 10-19 18:25

    CAN位時序參數(shù)計算器

    電子發(fā)燒友網站提供《CAN位時序參數(shù)計算器.pdf》資料免費下載
    發(fā)表于 10-11 09:55 ?1次下載
    CAN位時序參數(shù)<b class='flag-5'>計算器</b>

    色環(huán)電阻計算器的研究與應用

    個理想的色環(huán)電阻計算器的界面應該包含個顏色選擇,讓用戶能夠通過點擊或下拉菜單選擇各個顏色環(huán)。而在程序邏輯層面,計算器需要具備實時反饋功
    的頭像 發(fā)表于 09-18 13:45 ?884次閱讀

    設計一款基于opa847的高通濾波,仿真達不到效果怎么解決?

    各位好,目前打算設計一款基于opa847的高通濾波,放大倍數(shù)為40dB,截止頻率為20kHz,通過書籍資料上的公式計算出的結果進行仿真,似乎達不到效果,想請問各位該如何解決?
    發(fā)表于 08-19 07:18