Pyqt實(shí)現(xiàn)簡(jiǎn)易計(jì)算器功能
本文實(shí)例為大家分享了Pyqt實(shí)現(xiàn)簡(jiǎn)易計(jì)算器的具體代碼,供大家參考,具體內(nèi)容如下
環(huán)境:pycharm、python3.7
首先用qtDesigner設(shè)計(jì)出如下界面。
再用pyUIC將.ui文件轉(zhuǎn)化內(nèi).py文件。源碼如下
# -*- coding: utf-8 -*- ? # Form implementation generated from reading ui file 'calculator.ui' # # Created by: PyQt5 UI code generator 5.11.3 # # WARNING! All changes made in this file will be lost! ? from PyQt5 import QtCore, QtGui, QtWidgets ? class Ui_MainWindow(object): ? ? def setupUi(self, MainWindow): ? ? ? ? MainWindow.setObjectName("MainWindow") ? ? ? ? MainWindow.resize(726, 592) ? ? ? ? self.centralwidget = QtWidgets.QWidget(MainWindow) ? ? ? ? self.centralwidget.setObjectName("centralwidget") ? ? ? ? self.outLine = QtWidgets.QLineEdit(self.centralwidget) ? ? ? ? self.outLine.setGeometry(QtCore.QRect(180, 50, 351, 41)) ? ? ? ? self.outLine.setObjectName("outLine") ? ? ? ? self.bt1 = QtWidgets.QPushButton(self.centralwidget) ? ? ? ? self.bt1.setGeometry(QtCore.QRect(190, 110, 61, 61)) ? ? ? ? self.bt1.setObjectName("bt1") ? ? ? ? self.bt2 = QtWidgets.QPushButton(self.centralwidget) ? ? ? ? self.bt2.setGeometry(QtCore.QRect(270, 110, 61, 61)) ? ? ? ? self.bt2.setObjectName("bt2") ? ? ? ? self.bt3 = QtWidgets.QPushButton(self.centralwidget) ? ? ? ? self.bt3.setGeometry(QtCore.QRect(360, 110, 61, 61)) ? ? ? ? self.bt3.setObjectName("bt3") ? ? ? ? self.btPlus = QtWidgets.QPushButton(self.centralwidget) ? ? ? ? self.btPlus.setGeometry(QtCore.QRect(450, 110, 61, 61)) ? ? ? ? self.btPlus.setObjectName("btPlus") ? ? ? ? self.bt6 = QtWidgets.QPushButton(self.centralwidget) ? ? ? ? self.bt6.setGeometry(QtCore.QRect(360, 190, 61, 61)) ? ? ? ? self.bt6.setObjectName("bt6") ? ? ? ? self.bt5 = QtWidgets.QPushButton(self.centralwidget) ? ? ? ? self.bt5.setGeometry(QtCore.QRect(270, 190, 61, 61)) ? ? ? ? self.bt5.setObjectName("bt5") ? ? ? ? self.btSub = QtWidgets.QPushButton(self.centralwidget) ? ? ? ? self.btSub.setGeometry(QtCore.QRect(450, 190, 61, 61)) ? ? ? ? self.btSub.setObjectName("btSub") ? ? ? ? self.bt4 = QtWidgets.QPushButton(self.centralwidget) ? ? ? ? self.bt4.setGeometry(QtCore.QRect(190, 190, 61, 61)) ? ? ? ? self.bt4.setObjectName("bt4") ? ? ? ? self.bt9 = QtWidgets.QPushButton(self.centralwidget) ? ? ? ? self.bt9.setGeometry(QtCore.QRect(360, 270, 61, 61)) ? ? ? ? self.bt9.setObjectName("bt9") ? ? ? ? self.bt8 = QtWidgets.QPushButton(self.centralwidget) ? ? ? ? self.bt8.setGeometry(QtCore.QRect(270, 270, 61, 61)) ? ? ? ? self.bt8.setObjectName("bt8") ? ? ? ? self.btMul = QtWidgets.QPushButton(self.centralwidget) ? ? ? ? self.btMul.setGeometry(QtCore.QRect(450, 270, 61, 61)) ? ? ? ? self.btMul.setObjectName("btMul") ? ? ? ? self.bt7 = QtWidgets.QPushButton(self.centralwidget) ? ? ? ? self.bt7.setGeometry(QtCore.QRect(190, 270, 61, 61)) ? ? ? ? self.bt7.setObjectName("bt7") ? ? ? ? self.btCal = QtWidgets.QPushButton(self.centralwidget) ? ? ? ? self.btCal.setGeometry(QtCore.QRect(360, 340, 61, 61)) ? ? ? ? self.btCal.setObjectName("btCal") ? ? ? ? self.bt0 = QtWidgets.QPushButton(self.centralwidget) ? ? ? ? self.bt0.setGeometry(QtCore.QRect(270, 340, 61, 61)) ? ? ? ? self.bt0.setObjectName("bt0") ? ? ? ? self.btDiv = QtWidgets.QPushButton(self.centralwidget) ? ? ? ? self.btDiv.setGeometry(QtCore.QRect(450, 340, 61, 61)) ? ? ? ? self.btDiv.setObjectName("btDiv") ? ? ? ? self.btClr = QtWidgets.QPushButton(self.centralwidget) ? ? ? ? self.btClr.setGeometry(QtCore.QRect(190, 340, 61, 61)) ? ? ? ? self.btClr.setObjectName("btClr") ? ? ? ? MainWindow.setCentralWidget(self.centralwidget) ? ? ? ? self.menubar = QtWidgets.QMenuBar(MainWindow) ? ? ? ? self.menubar.setGeometry(QtCore.QRect(0, 0, 726, 26)) ? ? ? ? self.menubar.setObjectName("menubar") ? ? ? ? MainWindow.setMenuBar(self.menubar) ? ? ? ? self.statusbar = QtWidgets.QStatusBar(MainWindow) ? ? ? ? self.statusbar.setObjectName("statusbar") ? ? ? ? MainWindow.setStatusBar(self.statusbar) ? ? ? ? ? self.retranslateUi(MainWindow) ? ? ? ? QtCore.QMetaObject.connectSlotsByName(MainWindow) ? ? ? def retranslateUi(self, MainWindow): ? ? ? ? _translate = QtCore.QCoreApplication.translate ? ? ? ? MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) ? ? ? ? self.bt1.setText(_translate("MainWindow", "1")) ? ? ? ? self.bt2.setText(_translate("MainWindow", "2")) ? ? ? ? self.bt3.setText(_translate("MainWindow", "3")) ? ? ? ? self.btPlus.setText(_translate("MainWindow", "+")) ? ? ? ? self.bt6.setText(_translate("MainWindow", "6")) ? ? ? ? self.bt5.setText(_translate("MainWindow", "5")) ? ? ? ? self.btSub.setText(_translate("MainWindow", "-")) ? ? ? ? self.bt4.setText(_translate("MainWindow", "4")) ? ? ? ? self.bt9.setText(_translate("MainWindow", "9")) ? ? ? ? self.bt8.setText(_translate("MainWindow", "8")) ? ? ? ? self.btMul.setText(_translate("MainWindow", "*")) ? ? ? ? self.bt7.setText(_translate("MainWindow", "7")) ? ? ? ? self.btCal.setText(_translate("MainWindow", "=")) ? ? ? ? self.bt0.setText(_translate("MainWindow", "0")) ? ? ? ? self.btDiv.setText(_translate("MainWindow", "/")) ? ? ? ? self.btClr.setText(_translate("MainWindow", "clear"))
在新建一個(gè)py文件引入剛才pyUIC生成的ui文件。寫入相關(guān)代碼,源碼如下:
# -*- coding: utf-8 -*- # @Author:ct # @ProjectName:calculator.py # @Desc: # @Time: import sys from calculatorUI import Ui_MainWindow from PyQt5.QtWidgets import QApplication, QWidget, QMainWindow ? ? class mWindow(QMainWindow, Ui_MainWindow): ? ? def __init__(self): ? ? ? ? super(mWindow, self).__init__() ? ? ? ? self.setupUi(self) ? ? ? # 定義所有按鈕事件函數(shù) ? ? def prs_bt0(self): ? ? ? ? self.outLine.insert('0') ? ? ? def prs_bt1(self): ? ? ? ? self.outLine.insert('1') ? ? ? def prs_bt2(self): ? ? ? ? self.outLine.insert('2') ? ? ? def prs_bt3(self): ? ? ? ? self.outLine.insert('3') ? ? ? def prs_bt4(self): ? ? ? ? self.outLine.insert('4') ? ? ? def prs_bt5(self): ? ? ? ? self.outLine.insert('5') ? ? ? def prs_bt6(self): ? ? ? ? self.outLine.insert('6') ? ? ? def prs_bt7(self): ? ? ? ? self.outLine.insert('7') ? ? ? def prs_bt8(self): ? ? ? ? self.outLine.insert('8') ? ? ? def prs_bt9(self): ? ? ? ? self.outLine.insert('9') ? ? ? def prs_btPlus(self): ? ? ? ? self.outLine.insert('+') ? ? ? def prs_btSub(self): ? ? ? ? self.outLine.insert('-') ? ? ? def prs_btMul(self): ? ? ? ? self.outLine.insert('*') ? ? ? def prs_btDiv(self): ? ? ? ? self.outLine.insert('/') ? ? ? def prs_btClr(self): ? ? ? ? self.outLine.clear() ? ? ? # 計(jì)算表達(dá)式事件,通過(guò)eval函數(shù)將字符串表達(dá)式計(jì)算 ? ? def prs_btCal(self): ? ? ? ? # 獲得輸入框的內(nèi)容(字符串形式) ? ? ? ? exp = self.outLine.text() ? ? ? ? res = eval(exp) ? ? ? ? self.outLine.insert('=') ? ? ? ? self.outLine.insert(str(res)) ? ? if __name__ == '__main__': ? ? app = QApplication(sys.argv) ? ? mainWindow = mWindow() ? ? # mainWindow.outLine.setEnabled(False) ? ? # 使輸出框只能被讀取,不能輸入內(nèi)容 ? ? mainWindow.outLine.setReadOnly(True) ? ? # 關(guān)聯(lián)所有按鈕事件 ? ? mainWindow.bt0.clicked.connect(mainWindow.prs_bt0) ? ? mainWindow.bt1.clicked.connect(mainWindow.prs_bt1) ? ? mainWindow.bt2.clicked.connect(mainWindow.prs_bt2) ? ? mainWindow.bt3.clicked.connect(mainWindow.prs_bt3) ? ? mainWindow.bt4.clicked.connect(mainWindow.prs_bt4) ? ? mainWindow.bt5.clicked.connect(mainWindow.prs_bt5) ? ? mainWindow.bt6.clicked.connect(mainWindow.prs_bt6) ? ? mainWindow.bt7.clicked.connect(mainWindow.prs_bt7) ? ? mainWindow.bt8.clicked.connect(mainWindow.prs_bt8) ? ? mainWindow.bt9.clicked.connect(mainWindow.prs_bt9) ? ? mainWindow.btPlus.clicked.connect(mainWindow.prs_btPlus) ? ? mainWindow.btDiv.clicked.connect(mainWindow.prs_btDiv) ? ? mainWindow.btMul.clicked.connect(mainWindow.prs_btMul) ? ? mainWindow.btSub.clicked.connect(mainWindow.prs_btSub) ? ? mainWindow.btCal.clicked.connect(mainWindow.prs_btCal) ? ? mainWindow.btClr.clicked.connect(mainWindow.prs_btClr) ? ? ? mainWindow.show() ? ? # 讓程序循環(huán)運(yùn)行 ? ? sys.exit(app.exec_())
運(yùn)行程序,結(jié)果如下:
可進(jìn)行簡(jiǎn)單的運(yùn)算。當(dāng)然還有諸多bug,如輸入錯(cuò)誤表達(dá)式不能容錯(cuò)等,待以后修復(fù)。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python3射線法判斷點(diǎn)是否在多邊形內(nèi)
這篇文章主要為大家詳細(xì)介紹了python3射線法判斷點(diǎn)是否在多邊形內(nèi),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-06-06python防止程序超時(shí)的實(shí)現(xiàn)示例
因?yàn)槟硞€(gè)需求,需要在程序運(yùn)行的時(shí)候防止超時(shí),本文主要介紹了python防止程序超時(shí)的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下2023-08-08Python標(biāo)準(zhǔn)庫(kù)defaultdict模塊使用示例
這篇文章主要介紹了Python標(biāo)準(zhǔn)庫(kù)defaultdict模塊使用示例,本文講解了如何使用defaultdict給字典value元素添加默認(rèn)類型以及defaultdict的兩個(gè)使用小案例,需要的朋友可以參考下2015-04-04python使用any判斷一個(gè)對(duì)象是否為空的方法
這篇文章主要介紹了python使用any判斷一個(gè)對(duì)象是否為空的方法,并給出了改進(jìn)的方法供大家對(duì)比參考,具有一定的借鑒價(jià)值,需要的朋友可以參考下2014-11-11Python實(shí)現(xiàn)的遠(yuǎn)程登錄windows系統(tǒng)功能示例
這篇文章主要介紹了Python實(shí)現(xiàn)的遠(yuǎn)程登錄windows系統(tǒng)功能,結(jié)合實(shí)例形式分析了Python基于wmi模塊的遠(yuǎn)程連接與進(jìn)程操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-06-06