我正在用PyQt5写一个计算器,我不能让它计算百分比
编码:
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(320, 540)
MainWindow.setMinimumSize(QtCore.QSize(320, 460))
MainWindow.setMaximumSize(QtCore.QSize(320, 540))
MainWindow.setStyleSheet("")
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.input_data = QtWidgets.QLineEdit(self.centralwidget)
self.input_data.setGeometry(QtCore.QRect(0, 0, 320, 140))
self.input_data.setMinimumSize(QtCore.QSize(320, 140))
self.input_data.setMaximumSize(QtCore.QSize(320, 140))
font = QtGui.QFont()
font.setPointSize(30)
self.input_data.setFont(font)
self.input_data.setStyleSheet("background-color: rgb(0, 0, 0);\n"
"border: none;\n"
"color: white;\n"
"")
self.input_data.setText("")
self.input_data.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
self.input_data.setObjectName("input_data")
self.button7 = QtWidgets.QPushButton(self.centralwidget)
self.button7.setGeometry(QtCore.QRect(0, 220, 81, 81))
self.button7.setMinimumSize(QtCore.QSize(81, 81))
self.button7.setMaximumSize(QtCore.QSize(81, 81))
font = QtGui.QFont()
font.setPointSize(20)
self.button7.setFont(font)
self.button7.setStyleSheet("QPushButton {\n"
" color: #ffffff;\n"
" background-color: rgb(5, 15, 17);\n"
" border-radius: 0px;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
" \n"
" background-color: rgb(63, 63, 63);\n"
"}")
self.button7.setObjectName("button7")
self.button8 = QtWidgets.QPushButton(self.centralwidget)
self.button8.setGeometry(QtCore.QRect(80, 220, 81, 81))
self.button8.setMinimumSize(QtCore.QSize(81, 81))
self.button8.setMaximumSize(QtCore.QSize(81, 81))
font = QtGui.QFont()
font.setPointSize(20)
self.button8.setFont(font)
self.button8.setStyleSheet("QPushButton {\n"
" color: #ffffff;\n"
" background-color: rgb(5, 15, 17);\n"
" border-radius: 0px;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
" \n"
" background-color: rgb(63, 63, 63);\n"
"}")
self.button8.setObjectName("button8")
self.button9 = QtWidgets.QPushButton(self.centralwidget)
self.button9.setGeometry(QtCore.QRect(160, 220, 81, 81))
self.button9.setMinimumSize(QtCore.QSize(81, 81))
self.button9.setMaximumSize(QtCore.QSize(81, 81))
font = QtGui.QFont()
font.setPointSize(20)
self.button9.setFont(font)
self.button9.setStyleSheet("QPushButton {\n"
" color: #ffffff;\n"
" background-color: rgb(5, 15, 17);\n"
" border-radius: 0px;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
" \n"
" background-color: rgb(63, 63, 63);\n"
"}")
self.button9.setObjectName("button9")
self.button4 = QtWidgets.QPushButton(self.centralwidget)
self.button4.setGeometry(QtCore.QRect(0, 300, 81, 81))
self.button4.setMinimumSize(QtCore.QSize(81, 81))
self.button4.setMaximumSize(QtCore.QSize(81, 81))
font = QtGui.QFont()
font.setPointSize(20)
self.button4.setFont(font)
self.button4.setStyleSheet("QPushButton {\n"
" color: #ffffff;\n"
" background-color: rgb(5, 15, 17);\n"
" border-radius: 0px;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
" \n"
" background-color: rgb(63, 63, 63);\n"
"}")
self.button4.setObjectName("button4")
self.button5 = QtWidgets.QPushButton(self.centralwidget)
self.button5.setGeometry(QtCore.QRect(80, 300, 81, 81))
self.button5.setMinimumSize(QtCore.QSize(81, 81))
self.button5.setMaximumSize(QtCore.QSize(81, 81))
font = QtGui.QFont()
font.setPointSize(20)
self.button5.setFont(font)
self.button5.setStyleSheet("QPushButton {\n"
" color: #ffffff;\n"
" background-color: rgb(5, 15, 17);\n"
" border-radius: 0px;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
" \n"
" background-color: rgb(63, 63, 63);\n"
"}")
self.button5.setObjectName("button5")
self.button6 = QtWidgets.QPushButton(self.centralwidget)
self.button6.setGeometry(QtCore.QRect(160, 300, 81, 81))
self.button6.setMinimumSize(QtCore.QSize(81, 81))
self.button6.setMaximumSize(QtCore.QSize(81, 81))
font = QtGui.QFont()
font.setPointSize(20)
self.button6.setFont(font)
self.button6.setStyleSheet("QPushButton {\n"
" color: #ffffff;\n"
" background-color: rgb(5, 15, 17);\n"
" border-radius: 0px;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
" \n"
" background-color: rgb(63, 63, 63);\n"
"}")
self.button6.setObjectName("button6")
self.buttonpoint = QtWidgets.QPushButton(self.centralwidget)
self.buttonpoint.setGeometry(QtCore.QRect(80, 460, 81, 81))
self.buttonpoint.setMinimumSize(QtCore.QSize(81, 81))
self.buttonpoint.setMaximumSize(QtCore.QSize(81, 81))
font = QtGui.QFont()
font.setPointSize(20)
self.buttonpoint.setFont(font)
self.buttonpoint.setStyleSheet("QPushButton {\n"
" color: #ffffff;\n"
" background-color: rgb(5, 15, 17);\n"
" border-radius: 0px;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
" \n"
" background-color: rgb(63, 63, 63);\n"
"}")
self.buttonpoint.setObjectName("buttonpoint")
self.button0 = QtWidgets.QPushButton(self.centralwidget)
self.button0.setGeometry(QtCore.QRect(0, 460, 81, 81))
self.button0.setMinimumSize(QtCore.QSize(81, 81))
self.button0.setMaximumSize(QtCore.QSize(81, 81))
font = QtGui.QFont()
font.setPointSize(20)
self.button0.setFont(font)
self.button0.setStyleSheet("QPushButton {\n"
" color: #ffffff;\n"
" background-color: rgb(5, 15, 17);\n"
" border-radius: 0px;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
" \n"
" background-color: rgb(63, 63, 63);\n"
"}")
self.button0.setObjectName("button0")
self.buttonc = QtWidgets.QPushButton(self.centralwidget)
self.buttonc.setGeometry(QtCore.QRect(0, 140, 81, 81))
self.buttonc.setMinimumSize(QtCore.QSize(81, 81))
self.buttonc.setMaximumSize(QtCore.QSize(162, 81))
font = QtGui.QFont()
font.setPointSize(20)
self.buttonc.setFont(font)
self.buttonc.setStyleSheet("QPushButton {\n"
" color: #ffffff;\n"
" background-color: rgb(5, 15, 17);\n"
" border-radius: 0px;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
" \n"
" background-color: rgb(63, 63, 63);\n"
"}")
self.buttonc.setObjectName("buttonc")
self.button1 = QtWidgets.QPushButton(self.centralwidget)
self.button1.setGeometry(QtCore.QRect(0, 380, 81, 81))
self.button1.setMinimumSize(QtCore.QSize(81, 81))
self.button1.setMaximumSize(QtCore.QSize(81, 81))
font = QtGui.QFont()
font.setPointSize(20)
self.button1.setFont(font)
self.button1.setStyleSheet("QPushButton {\n"
" color: #ffffff;\n"
" background-color: rgb(5, 15, 17);\n"
" border-radius: 0px;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
" \n"
" background-color: rgb(63, 63, 63);\n"
"}")
self.button1.setObjectName("button1")
self.button2 = QtWidgets.QPushButton(self.centralwidget)
self.button2.setGeometry(QtCore.QRect(80, 380, 81, 81))
self.button2.setMinimumSize(QtCore.QSize(81, 81))
self.button2.setMaximumSize(QtCore.QSize(81, 81))
font = QtGui.QFont()
font.setPointSize(20)
self.button2.setFont(font)
self.button2.setStyleSheet("QPushButton {\n"
" color: #ffffff;\n"
" background-color: rgb(5, 15, 17);\n"
" border-radius: 0px;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
" \n"
" background-color: rgb(63, 63, 63);\n"
"}")
self.button2.setObjectName("button2")
self.button3 = QtWidgets.QPushButton(self.centralwidget)
self.button3.setGeometry(QtCore.QRect(160, 380, 81, 81))
self.button3.setMinimumSize(QtCore.QSize(81, 81))
self.button3.setMaximumSize(QtCore.QSize(81, 81))
font = QtGui.QFont()
font.setPointSize(20)
self.button3.setFont(font)
self.button3.setStyleSheet("QPushButton {\n"
" color: #ffffff;\n"
" background-color: rgb(5, 15, 17);\n"
" border-radius: 0px;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
" \n"
" background-color: rgb(63, 63, 63);\n"
"}")
self.button3.setObjectName("button3")
self.buttonbackspace = QtWidgets.QPushButton(self.centralwidget)
self.buttonbackspace.setGeometry(QtCore.QRect(160, 140, 81, 81))
self.buttonbackspace.setMinimumSize(QtCore.QSize(81, 81))
self.buttonbackspace.setMaximumSize(QtCore.QSize(81, 81))
font = QtGui.QFont()
font.setPointSize(20)
self.buttonbackspace.setFont(font)
self.buttonbackspace.setStyleSheet("QPushButton {\n"
" color: #ffffff;\n"
" background-color: rgb(5, 15, 17);\n"
" border-radius: 0px;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
" \n"
" background-color: rgb(63, 63, 63);\n"
"}")
self.buttonbackspace.setObjectName("buttonbackspace")
self.buttonadd = QtWidgets.QPushButton(self.centralwidget)
self.buttonadd.setGeometry(QtCore.QRect(240, 140, 81, 81))
self.buttonadd.setMinimumSize(QtCore.QSize(81, 81))
self.buttonadd.setMaximumSize(QtCore.QSize(81, 81))
font = QtGui.QFont()
font.setPointSize(20)
self.buttonadd.setFont(font)
self.buttonadd.setStyleSheet("QPushButton {\n"
" color: #ffffff;\n"
" background-color: rgb(12, 66, 68);\n"
" border-radius: 0px;\n"
"}\n"
"QPushButton:hover {\n"
" background-color: rgb(18, 103, 106);\n"
"}")
self.buttonadd.setObjectName("buttonadd")
self.buttonsub = QtWidgets.QPushButton(self.centralwidget)
self.buttonsub.setGeometry(QtCore.QRect(240, 220, 81, 81))
self.buttonsub.setMinimumSize(QtCore.QSize(81, 81))
self.buttonsub.setMaximumSize(QtCore.QSize(81, 81))
font = QtGui.QFont()
font.setPointSize(20)
self.buttonsub.setFont(font)
self.buttonsub.setStyleSheet("QPushButton {\n"
" color: #ffffff;\n"
" background-color: rgb(12, 66, 68);\n"
" border-radius: 0px;\n"
"}\n"
"QPushButton:hover {\n"
" background-color: rgb(18, 103, 106);\n"
"}")
self.buttonsub.setObjectName("buttonsub")
self.buttonmult = QtWidgets.QPushButton(self.centralwidget)
self.buttonmult.setGeometry(QtCore.QRect(240, 300, 81, 81))
self.buttonmult.setMinimumSize(QtCore.QSize(81, 81))
self.buttonmult.setMaximumSize(QtCore.QSize(81, 81))
font = QtGui.QFont()
font.setPointSize(20)
self.buttonmult.setFont(font)
self.buttonmult.setStyleSheet("QPushButton {\n"
" color: #ffffff;\n"
" background-color: rgb(12, 66, 68);\n"
" border-radius: 0px;\n"
"}\n"
"QPushButton:hover {\n"
" background-color: rgb(18, 103, 106);\n"
"}")
self.buttonmult.setObjectName("buttonmult")
self.buttondiv = QtWidgets.QPushButton(self.centralwidget)
self.buttondiv.setGeometry(QtCore.QRect(240, 380, 81, 81))
self.buttondiv.setMinimumSize(QtCore.QSize(81, 81))
self.buttondiv.setMaximumSize(QtCore.QSize(81, 81))
font = QtGui.QFont()
font.setPointSize(20)
self.buttondiv.setFont(font)
self.buttondiv.setStyleSheet("QPushButton {\n"
" color: #ffffff;\n"
" background-color: rgb(12, 66, 68);\n"
" border-radius: 0px;\n"
"}\n"
"QPushButton:hover {\n"
" background-color: rgb(18, 103, 106);\n"
"}")
self.buttondiv.setObjectName("buttondiv")
self.buttonequally = QtWidgets.QPushButton(self.centralwidget)
self.buttonequally.setGeometry(QtCore.QRect(160, 460, 162, 81))
self.buttonequally.setMinimumSize(QtCore.QSize(162, 81))
self.buttonequally.setMaximumSize(QtCore.QSize(162, 81))
font = QtGui.QFont()
font.setPointSize(20)
self.buttonequally.setFont(font)
self.buttonequally.setStyleSheet("QPushButton {\n"
" color: #ffffff;\n"
" background-color: rgb(41, 174, 161);\n"
" border-radius: 0px;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
" background-color: rgb(31, 135, 125);\n"
"}")
self.buttonequally.setObjectName("buttonequally")
self.history = QtWidgets.QLabel(self.centralwidget)
self.history.setGeometry(QtCore.QRect(50, 20, 261, 20))
font = QtGui.QFont()
font.setPointSize(13)
self.history.setFont(font)
self.history.setStyleSheet("color: rgb(34, 187, 187);")
self.history.setText("")
self.history.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
self.history.setObjectName("history")
self.buttonprocent = QtWidgets.QPushButton(self.centralwidget)
self.buttonprocent.setGeometry(QtCore.QRect(80, 140, 81, 81))
self.buttonprocent.setMinimumSize(QtCore.QSize(81, 81))
self.buttonprocent.setMaximumSize(QtCore.QSize(81, 81))
font = QtGui.QFont()
font.setPointSize(20)
self.buttonprocent.setFont(font)
self.buttonprocent.setStyleSheet("QPushButton {\n"
" color: #ffffff;\n"
" background-color: rgb(5, 15, 17);\n"
" border-radius: 0px;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
" \n"
" background-color: rgb(63, 63, 63);\n"
"}")
self.buttonprocent.setObjectName("buttonprocent")
MainWindow.setCentralWidget(self.centralwidget)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.button7.setText(_translate("MainWindow", "7"))
self.button8.setText(_translate("MainWindow", "8"))
self.button9.setText(_translate("MainWindow", "9"))
self.button4.setText(_translate("MainWindow", "4"))
self.button5.setText(_translate("MainWindow", "5"))
self.button6.setText(_translate("MainWindow", "6"))
self.buttonpoint.setText(_translate("MainWindow", "."))
self.button0.setText(_translate("MainWindow", "0"))
self.buttonc.setText(_translate("MainWindow", "с"))
self.button1.setText(_translate("MainWindow", "1"))
self.button2.setText(_translate("MainWindow", "2"))
self.button3.setText(_translate("MainWindow", "3"))
self.buttonbackspace.setText(_translate("MainWindow", "<"))
self.buttonadd.setText(_translate("MainWindow", "+"))
self.buttonsub.setText(_translate("MainWindow", "-"))
self.buttonmult.setText(_translate("MainWindow", "*"))
self.buttondiv.setText(_translate("MainWindow", "/"))
self.buttonequally.setText(_translate("MainWindow", "="))
self.buttonprocent.setText(_translate("MainWindow", "%"))
class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
def __init__(self):
super().__init__()
self.setupUi(self)
self.button0.clicked.connect(lambda: self.write_number(self.button0.text()))
self.button1.clicked.connect(lambda: self.write_number(self.button1.text()))
self.button2.clicked.connect(lambda: self.write_number(self.button2.text()))
self.button3.clicked.connect(lambda: self.write_number(self.button3.text()))
self.button4.clicked.connect(lambda: self.write_number(self.button4.text()))
self.button5.clicked.connect(lambda: self.write_number(self.button5.text()))
self.button6.clicked.connect(lambda: self.write_number(self.button6.text()))
self.button7.clicked.connect(lambda: self.write_number(self.button7.text()))
self.button8.clicked.connect(lambda: self.write_number(self.button8.text()))
self.button9.clicked.connect(lambda: self.write_number(self.button9.text()))
self.buttonpoint.clicked.connect(lambda: self.write_number(self.buttonpoint.text()))
self.buttonadd.clicked.connect(lambda: self.write_number(self.buttonadd.text()))
self.buttonsub.clicked.connect(lambda: self.write_number(self.buttonsub.text()))
self.buttondiv.clicked.connect(lambda: self.write_number(self.buttondiv.text()))
self.buttonmult.clicked.connect(lambda: self.write_number(self.buttonmult.text()))
self.buttonprocent.clicked.connect(lambda: self.write_number(self.buttonprocent.text()))
self.buttonequally.clicked.connect(self.answer)
self.buttonc.clicked.connect(self.clean)
self.buttonbackspace.clicked.connect(self.del_last)
def write_number(self, number):
if self.input_data.text() == '0':
self.input_data.setText(number)
else:
self.input_data.setText(self.input_data.text() + number)
def del_last(self):
text = self.input_data.text()
if not text:
self.input_data.setText('0')
else:
text = self.input_data.text()[:-1]
self.input_data.setText(text)
def clean(self):
self.input_data.setText('0')
def answer(self):
result = eval(self.input_data.text())
self.input_data.setText(str(result))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
w = MainWindow()
w.show()
sys.exit(app.exec_())
当我试图得到响应时,程序就崩溃了。

或多或少是这样的: