99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何使用Python制作一款計(jì)算器

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

掃碼添加小助手

加入工程師交流群

1 ui設(shè)計(jì)

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

conda3.05Libraryin

designer.exe文件,雙擊啟動(dòng):

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

私信小編01 領(lǐng)取完整項(xiàng)目代碼

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

最終設(shè)計(jì)的計(jì)算器XiaoDing界面如下,

比如,其中一個(gè)用于計(jì)算器顯示的對(duì)象:lcdNumber,對(duì)象的類型為:LCD Number。右側(cè)為計(jì)算器中用到的所有對(duì)象。

2 轉(zhuǎn)py文件

使用如下命令,將設(shè)計(jì)好的ui文件轉(zhuǎn)為py文件

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

3 計(jì)算器實(shí)現(xiàn)邏輯

導(dǎo)入庫(kù):

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

主題代碼邏輯很精簡(jiǎn):

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

基礎(chǔ)方法:

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對(duì)應(yīng)的實(shí)現(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對(duì)應(yīng)實(shí)現(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()

=號(hào)對(duì)應(yīng)的方法實(shí)現(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_()

完整代碼請(qǐng)參考點(diǎn)擊閱讀原文下載,代碼只有100行。完整代碼請(qǐng)點(diǎn)擊文章最底部的【閱讀原文】。啟動(dòng)后的界面如下:

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

    關(guān)注

    16

    文章

    439

    瀏覽量

    38081
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4827

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    Qorvo全新設(shè)計(jì)計(jì)算器:晶振選型、能耗預(yù)算計(jì)算器和鏈路預(yù)算與覆蓋范圍計(jì)算器

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

    VirtualLab:衍射角計(jì)算器

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

    VirtualLab Fusion應(yīng)用:相干時(shí)間和相干長(zhǎng)度計(jì)算器

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

    VirtualLab:衍射角計(jì)算器

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

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

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

    VirtualLab Fusion應(yīng)用:相干時(shí)間和相干長(zhǎng)度計(jì)算器

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

    Debye-Wolf積分計(jì)算器的用法

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

    LP光纖模式計(jì)算器

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

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

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

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

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

    基于FPGA的計(jì)算器設(shè)計(jì)

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

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

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

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

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

    色環(huán)電阻計(jì)算器的研究與應(yīng)用

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

    設(shè)計(jì)一款基于opa847的高通濾波,仿真達(dá)不到效果怎么解決?

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