pyqt5实现简单计算器
导入PyQt5包
pip install pyqt5
Ui_Form.py
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName("Cacular")
Form.resize(400, 500)
self.verticalLayout_5 = QtWidgets.QVBoxLayout(Form)
self.verticalLayout_5.setObjectName("verticalLayout_5")
self.lineEdit = QtWidgets.QLineEdit(Form)
self.lineEdit.setFont(QtGui.QFont("Times", 20))
self.lineEdit.setReadOnly(True)
#调整为从右边输入,大小等
self.lineEdit.setAlignment(QtCore.Qt.AlignRight)
self.lineEdit.setMaxLength(15)
self.lineEdit.setMinimumSize(QtCore.QSize(0, 70))
self.lineEdit.setObjectName("lineEdit")
self.verticalLayout_5.addWidget(self.lineEdit)
self.horizontalLayout = QtWidgets.QHBoxLayout()
self.horizontalLayout.setObjectName("horizontalLayout")
self.verticalLayout_4 = QtWidgets.QVBoxLayout()
self.verticalLayout_4.setObjectName("verticalLayout_4")
self.Num_1 = QtWidgets.QPushButton(Form)
self.Num_1.setMinimumSize(QtCore.QSize(70, 70))
self.Num_1.setMaximumSize(QtCore.QSize(70, 70))
self.Num_1.setObjectName("Num_1")
self.verticalLayout_4.addWidget(self.Num_1)
self.Num_4 = QtWidgets.QPushButton(Form)
self.Num_4.setMinimumSize(QtCore.QSize(70, 70))
self.Num_4.setMaximumSize(QtCore.QSize(70, 70))
self.Num_4.setObjectName("Num_4")
self.verticalLayout_4.addWidget(self.Num_4)
self.Num_7 = QtWidgets.QPushButton(Form)
self.Num_7.setMinimumSize(QtCore.QSize(70, 70))
self.Num_7.setMaximumSize(QtCore.QSize(70, 70))
self.Num_7.setObjectName("Num_7")
self.verticalLayout_4.addWidget(self.Num_7)
self.OP_plus = QtWidgets.QPushButton(Form)
self.OP_plus.setMinimumSize(QtCore.QSize(70, 70))
self.OP_plus.setMaximumSize(QtCore.QSize(70, 70))
self.OP_plus.setObjectName("OP_plus")
self.verticalLayout_4.addWidget(self.OP_plus)
self.horizontalLayout.addLayout(self.verticalLayout_4)
self.verticalLayout_3 = QtWidgets.QVBoxLayout()
self.verticalLayout_3.setObjectName("verticalLayout_3")
self.Num_2 = QtWidgets.QPushButton(Form)
self.Num_2.setMinimumSize(QtCore.QSize(70, 70))
self.Num_2.setMaximumSize(QtCore.QSize(70, 70))
self.Num_2.setObjectName("Num_2")
self.verticalLayout_3.addWidget(self.Num_2)
self.Num_5 = QtWidgets.QPushButton(Form)
self.Num_5.setMinimumSize(QtCore.QSize(70, 70))
self.Num_5.setMaximumSize(QtCore.QSize(70, 70))
self.Num_5.setObjectName("Num_5")
self.verticalLayout_3.addWidget(self.Num_5)
self.Num_8 = QtWidgets.QPushButton(Form)
self.Num_8.setMinimumSize(QtCore.QSize(70, 70))
self.Num_8.setMaximumSize(QtCore.QSize(70, 70))
self.Num_8.setObjectName("Num_8")
self.verticalLayout_3.addWidget(self.Num_8)
self.Num_0 = QtWidgets.QPushButton(Form)
self.Num_0.setMinimumSize(QtCore.QSize(70, 70))
self.Num_0.setMaximumSize(QtCore.QSize(70, 70))
self.Num_0.setObjectName("Num_0")
self.verticalLayout_3.addWidget(self.Num_0)
self.horizontalLayout.addLayout(self.verticalLayout_3)
self.verticalLayout_2 = QtWidgets.QVBoxLayout()
self.verticalLayout_2.setObjectName("verticalLayout_2")
self.Num_3 = QtWidgets.QPushButton(Form)
self.Num_3.setMinimumSize(QtCore.QSize(70, 70))
self.Num_3.setMaximumSize(QtCore.QSize(70, 70))
self.Num_3.setObjectName("Num_3")
self.verticalLayout_2.addWidget(self.Num_3)
self.Num_6 = QtWidgets.QPushButton(Form)
self.Num_6.setMinimumSize(QtCore.QSize(70, 70))
self.Num_6.setMaximumSize(QtCore.QSize(70, 70))
self.Num_6.setObjectName("Num_6")
self.verticalLayout_2.addWidget(self.Num_6)
self.Num_9 = QtWidgets.QPushButton(Form)
self.Num_9.setMinimumSize(QtCore.QSize(70, 70))
self.Num_9.setMaximumSize(QtCore.QSize(70, 70))
self.Num_9.setObjectName("Num_9")
self.verticalLayout_2.addWidget(self.Num_9)
self.OP_minus = QtWidgets.QPushButton(Form)
self.OP_minus.setMinimumSize(QtCore.QSize(70, 70))
self.OP_minus.setMaximumSize(QtCore.QSize(70, 70))
self.OP_minus.setObjectName("OP_minus")
self.verticalLayout_2.addWidget(self.OP_minus)
self.horizontalLayout.addLayout(self.verticalLayout_2)
self.verticalLayout = QtWidgets.QVBoxLayout()
self.verticalLayout.setObjectName("verticalLayout")
self.CE = QtWidgets.QPushButton(Form)
self.CE.setMinimumSize(QtCore.QSize(70, 70))
self.CE.setMaximumSize(QtCore.QSize(70, 70))
self.CE.setObjectName("CE")
self.verticalLayout.addWidget(self.CE)
self.OP_multi = QtWidgets.QPushButton(Form)
self.OP_multi.setMinimumSize(QtCore.QSize(70, 70))
self.OP_multi.setMaximumSize(QtCore.QSize(70, 70))
self.OP_multi.setObjectName("OP_multi")
self.verticalLayout.addWidget(self.OP_multi)
self.OP_devide = QtWidgets.QPushButton(Form)
self.OP_devide.setMinimumSize(QtCore.QSize(70, 70))
self.OP_devide.setMaximumSize(QtCore.QSize(70, 70))
self.OP_devide.setObjectName("OP_devide")
self.verticalLayout.addWidget(self.OP_devide)
self.OP_equal = QtWidgets.QPushButton(Form)
self.OP_equal.setMinimumSize(QtCore.QSize(70, 70))
self.OP_equal.setMaximumSize(QtCore.QSize(70, 70))
self.OP_equal.setObjectName("OP_equal")
self.verticalLayout.addWidget(self.OP_equal)
self.horizontalLayout.addLayout(self.verticalLayout)
self.verticalLayout_5.addLayout(self.horizontalLayout)
self.retranslateUi(Form)
QtCore.QMetaObject.connectSlotsByName(Form)
def retranslateUi(self, Form):
_translate = QtCore.QCoreApplication.translate
Form.setWindowTitle(_translate("Form", "Cacular"))
self.Num_1.setText(_translate("Form", "1"))
self.Num_4.setText(_translate("Form", "4"))
self.Num_7.setText(_translate("Form", "7"))
self.OP_plus.setText(_translate("Form", "+"))
self.Num_2.setText(_translate("Form", "2"))
self.Num_5.setText(_translate("Form", "5"))
self.Num_8.setText(_translate("Form", "8"))
self.Num_0.setText(_translate("Form", "0"))
self.Num_3.setText(_translate("Form", "3"))
self.Num_6.setText(_translate("Form", "6"))
self.Num_9.setText(_translate("Form", "9"))
self.OP_minus.setText(_translate("Form", "-"))
self.CE.setText(_translate("Form", "重置"))
self.OP_multi.setText(_translate("Form", "*"))
self.OP_devide.setText(_translate("Form", "/"))
self.OP_equal.setText(_translate("Form", "="))
Cacular.py
from Ui_Form import Ui_Form
import sys
from PyQt5.QtWidgets import QWidget, QApplication
class Cacular(QWidget, Ui_Form):
def __init__(self):
super(Cacular, self).__init__()
self.setupUi(self)
self.connecter()
self.show()
def ps_CE(self):
self.lineEdit.clear()
def ps_Num_1(self):
self.lineEdit.insert('1')
def ps_Num_0(self):
self.lineEdit.insert('0')
def ps_Num_2(self):
self.lineEdit.insert('2')
def ps_Num_3(self):
self.lineEdit.insert('3')
def ps_Num_4(self):
self.lineEdit.insert('4')
def ps_Num_5(self):
self.lineEdit.insert('5')
def ps_Num_6(self):
self.lineEdit.insert('6')
def ps_Num_7(self):
self.lineEdit.insert('7')
def ps_Num_8(self):
self.lineEdit.insert('8')
def ps_Num_9(self):
self.lineEdit.insert('9')
def ps_plus(self):
self.lineEdit.insert('+')
def ps_minus(self):
self.lineEdit.insert('-')
def ps_multi(self):
self.lineEdit.insert('*')
def ps_devide(self):
self.lineEdit.insert('/')
def connecter(self):
self.Num_0.clicked.connect(self.ps_Num_0)
self.Num_1.clicked.connect(self.ps_Num_1)
self.Num_2.clicked.connect(self.ps_Num_2)
self.Num_3.clicked.connect(self.ps_Num_3)
self.Num_4.clicked.connect(self.ps_Num_4)
self.Num_5.clicked.connect(self.ps_Num_5)
self.Num_6.clicked.connect(self.ps_Num_6)
self.Num_7.clicked.connect(self.ps_Num_7)
self.Num_8.clicked.connect(self.ps_Num_8)
self.Num_9.clicked.connect(self.ps_Num_9)
self.OP_plus.clicked.connect(self.ps_plus)
self.OP_minus.clicked.connect(self.ps_minus)
self.OP_multi.clicked.connect(self.ps_multi)
self.OP_devide.clicked.connect(self.ps_devide)
self.OP_equal.clicked.connect(self.calcu)
self.CE.clicked.connect(self.ps_CE)
def calcu(self):
text = self.lineEdit.text()
try:
result = eval(text)
self.lineEdit.setText(str(eval(text)))
except:
self.lineEdit.setText('invalid syntax!')
if __name__ == '__main__':
app = QApplication(sys.argv)
Ca = Cacular()
sys.exit(app.exec_())