Pyqt實現(xiàn)簡易計算器功能
更新時間:2022年05月06日 11:23:00 作者:CTGctgct
這篇文章主要為大家詳細介紹了Pyqt實現(xiàn)簡易計算器功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了Pyqt實現(xiàn)簡易計算器的具體代碼,供大家參考,具體內(nèi)容如下
環(huán)境:pycharm、python3.7
首先用qtDesigner設計出如下界面。
再用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"))
在新建一個py文件引入剛才pyUIC生成的ui文件。寫入相關代碼,源碼如下:
# -*- 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() ? ? ? # 計算表達式事件,通過eval函數(shù)將字符串表達式計算 ? ? 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) ? ? # 關聯(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)運行 ? ? sys.exit(app.exec_())
運行程序,結(jié)果如下:
可進行簡單的運算。當然還有諸多bug,如輸入錯誤表達式不能容錯等,待以后修復。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Python實現(xiàn)的遠程登錄windows系統(tǒng)功能示例
這篇文章主要介紹了Python實現(xiàn)的遠程登錄windows系統(tǒng)功能,結(jié)合實例形式分析了Python基于wmi模塊的遠程連接與進程操作相關實現(xiàn)技巧,需要的朋友可以參考下2018-06-06