[python]PyQt5-designer-练手小项目——计算器
问题1:
'mywindow' object has no attribute 'setCentralWidget'
解决方法:
在designer中选择错误,我选择了QMainWindow,需要改为QWights
问题2:
local variable 'num' referenced before assignment
解决办法:
全局变量的使用:在函数外定义一个空的变量。在函数里使用这个变量时申明,这是全局变量
def xianshi_0(self): global Inumber Inumber = Inumber + '0' print(Inumber) self.lineEdit_G.clear() self.lineEdit_G.setFocus() self.lineEdit_G.setText(Inumber)
from PyQt5.QtWidgets import QApplication, QWidget, QMessageBox from Ui_calculator import Ui_calculator import random,math import sys Inumber = '' Fnumber = 0 Snumber = 0 Biaozhi = '' class mywindow(Ui_calculator,QWidget): def __init__(self): super(mywindow, self).__init__() self.setupUi(self) self.setWindowTitle('计算器') self.pushButton_0.clicked.connect(self.xianshi_0) self.pushButton_1.clicked.connect(self.xianshi_1) self.pushButton_2.clicked.connect(self.xianshi_2) self.pushButton_3.clicked.connect(self.xianshi_3) self.pushButton_4.clicked.connect(self.xianshi_4) self.pushButton_5.clicked.connect(self.xianshi_5) self.pushButton_6.clicked.connect(self.xianshi_6) self.pushButton_7.clicked.connect(self.xianshi_7) self.pushButton_8.clicked.connect(self.xianshi_8) self.pushButton_9.clicked.connect(self.xianshi_9) self.pushButton_JIA.clicked.connect(self.xianshi_JIA) self.pushButton_JIAN.clicked.connect(self.xianshi_JIAN) self.pushButton_CHENG.clicked.connect(self.xianshi_CHENG) self.pushButton_CHU.clicked.connect(self.xianshi_CHU) self.pushButton_DENGYU.clicked.connect(self.xianshi_DENGYU) self.pushButton.clicked.connect(self.DEL) # print(self.num+"1111111") # 推出弹窗确认 def closeEvent(self, event): reply = QMessageBox.question(self, '确认', '确认退出吗?', QMessageBox.Yes|QMessageBox.No) if reply == QMessageBox.Yes: event.accept() else: event.ignore() # 0 def xianshi_0(self): global Inumber Inumber = Inumber + '0' # print(Inumber) self.lineEdit_G.clear() self.lineEdit_G.setFocus() self.lineEdit_G.setText(Inumber) # 1 def xianshi_1(self): global Inumber Inumber = Inumber + '1' # print(Inumber) self.lineEdit_G.clear() self.lineEdit_G.setFocus() self.lineEdit_G.setText(Inumber) # 2 def xianshi_2(self): global Inumber Inumber = Inumber + '2' # print(Inumber) self.lineEdit_G.clear() self.lineEdit_G.setFocus() self.lineEdit_G.setText(Inumber) # 3 def xianshi_3(self): global Inumber Inumber = Inumber + '3' # print(Inumber) self.lineEdit_G.clear() self.lineEdit_G.setFocus() self.lineEdit_G.setText(Inumber) # 4 def xianshi_4(self): global Inumber Inumber = Inumber + '4' # print(Inumber) self.lineEdit_G.clear() self.lineEdit_G.setFocus() self.lineEdit_G.setText(Inumber) # 5 def xianshi_5(self): global Inumber Inumber = Inumber + '5' # print(Inumber) self.lineEdit_G.clear() self.lineEdit_G.setFocus() self.lineEdit_G.setText(Inumber) # 6 def xianshi_6(self): global Inumber Inumber = Inumber + '6' # print(Inumber) self.lineEdit_G.clear() self.lineEdit_G.setFocus() self.lineEdit_G.setText(Inumber) # 7 def xianshi_7(self): global Inumber Inumber = Inumber + '7' # print(Inumber) self.lineEdit_G.clear() self.lineEdit_G.setFocus() self.lineEdit_G.setText(Inumber) # 8 def xianshi_8(self): global Inumber Inumber = Inumber + '8' # print(Inumber) self.lineEdit_G.clear() self.lineEdit_G.setFocus() self.lineEdit_G.setText(Inumber) # 9 def xianshi_9(self): global Inumber Inumber = Inumber + '9' # print(Inumber) self.lineEdit_G.clear() self.lineEdit_G.setFocus() self.lineEdit_G.setText(Inumber) def xianshi_JIA(self): global Inumber global Fnumber global Biaozhi Biaozhi = '+' if Inumber == '': Fnumber = 0 Inumber = '0' else: Fnumber = int(Inumber) Inumber = '' self.lineEdit_G.clear() # self.lineEdit_G.clear() # self.lineEdit_G.setFocus() # self.lineEdit_A.setText(str(Fnumber)) # print(Fnumber) # print(Inumber) def xianshi_JIAN(self): global Inumber global Fnumber global Biaozhi Biaozhi = '-' if Inumber == '': Fnumber = 0 Inumber = '0' else: Fnumber = int(Inumber) Inumber = '' self.lineEdit_G.clear() def xianshi_CHENG(self): global Inumber global Fnumber global Biaozhi Biaozhi = '*' if Inumber == '': Fnumber = 0 Inumber = '0' else: Fnumber = int(Inumber) Inumber = '' self.lineEdit_G.clear() def xianshi_CHU(self): global Inumber global Fnumber global Biaozhi Biaozhi = '/' if Inumber == '': Fnumber = 0 Inumber = '0' else: Fnumber = int(Inumber) Inumber = '' self.lineEdit_G.clear() def xianshi_DENGYU(self): global Inumber global Fnumber global Snumber global Biaozhi # print(Fnumber,Inumber) self.lineEdit_G.clear() if Snumber == 0: if Biaozhi == '+': Snumber = Fnumber + int(Inumber) elif Biaozhi == '-': Snumber = Fnumber - int(Inumber) elif Biaozhi == '*': Snumber = Fnumber * int(Inumber) elif Biaozhi == '/': Snumber = Fnumber / int(Inumber) self.lineEdit_A.setText(str(Snumber)) else: if Biaozhi == '+': Snumber = Snumber + int(Inumber) elif Biaozhi == '-': Snumber = Snumber - int(Inumber) elif Biaozhi == '*': Snumber = Snumber * int(Inumber) elif Biaozhi == '/': Snumber = Snumber / int(Inumber) self.lineEdit_A.setText(str(Snumber)) Inumber = Snumber Fnumber = 0 Biaozhi = '' def DEL(self): global Inumber global Fnumber global Snumber global Biaozhi Inumber = '' Fnumber = 0 Snumber = 0 Biaozhi = '' self.lineEdit_G.clear() self.lineEdit_A.clear() if __name__ == '__main__': app = QApplication(sys.argv) w = mywindow() w.show() sys.exit(app.exec_())
UI:
from PyQt5 import QtCore, QtGui, QtWidgets class Ui_calculator(object): def setupUi(self, calculator): calculator.setObjectName("calculator") calculator.resize(443, 477) self.widget = QtWidgets.QWidget(calculator) self.widget.setGeometry(QtCore.QRect(20, 20, 415, 448)) self.widget.setObjectName("widget") self.verticalLayout = QtWidgets.QVBoxLayout(self.widget) self.verticalLayout.setContentsMargins(0, 0, 0, 0) self.verticalLayout.setObjectName("verticalLayout") self.gridLayout_2 = QtWidgets.QGridLayout() self.gridLayout_2.setObjectName("gridLayout_2") self.label = QtWidgets.QLabel(self.widget) self.label.setObjectName("label") self.gridLayout_2.addWidget(self.label, 1, 0, 1, 1) self.lineEdit_A = QtWidgets.QLineEdit(self.widget) self.lineEdit_A.setMinimumSize(QtCore.QSize(0, 50)) self.lineEdit_A.setObjectName("lineEdit_A") self.gridLayout_2.addWidget(self.lineEdit_A, 1, 1, 1, 2) self.lineEdit_G = QtWidgets.QLineEdit(self.widget) self.lineEdit_G.setMinimumSize(QtCore.QSize(0, 50)) self.lineEdit_G.setObjectName("lineEdit_G") self.gridLayout_2.addWidget(self.lineEdit_G, 0, 0, 1, 3) self.verticalLayout.addLayout(self.gridLayout_2) self.gridLayout = QtWidgets.QGridLayout() self.gridLayout.setObjectName("gridLayout") self.pushButton_0 = QtWidgets.QPushButton(self.widget) self.pushButton_0.setMinimumSize(QtCore.QSize(0, 50)) self.pushButton_0.setObjectName("pushButton_0") self.gridLayout.addWidget(self.pushButton_0, 3, 2, 1, 1) self.pushButton_3 = QtWidgets.QPushButton(self.widget) self.pushButton_3.setMinimumSize(QtCore.QSize(0, 50)) self.pushButton_3.setObjectName("pushButton_3") self.gridLayout.addWidget(self.pushButton_3, 2, 2, 1, 1) self.pushButton_6 = QtWidgets.QPushButton(self.widget) self.pushButton_6.setMinimumSize(QtCore.QSize(0, 50)) self.pushButton_6.setObjectName("pushButton_6") self.gridLayout.addWidget(self.pushButton_6, 1, 2, 1, 1) self.pushButton_JIAN = QtWidgets.QPushButton(self.widget) self.pushButton_JIAN.setMinimumSize(QtCore.QSize(0, 50)) self.pushButton_JIAN.setObjectName("pushButton_JIAN") self.gridLayout.addWidget(self.pushButton_JIAN, 3, 1, 1, 1) self.pushButton_4 = QtWidgets.QPushButton(self.widget) self.pushButton_4.setMinimumSize(QtCore.QSize(0, 50)) self.pushButton_4.setObjectName("pushButton_4") self.gridLayout.addWidget(self.pushButton_4, 1, 0, 1, 1) self.pushButton_7 = QtWidgets.QPushButton(self.widget) self.pushButton_7.setMinimumSize(QtCore.QSize(0, 50)) self.pushButton_7.setObjectName("pushButton_7") self.gridLayout.addWidget(self.pushButton_7, 0, 0, 1, 1) self.pushButton_9 = QtWidgets.QPushButton(self.widget) self.pushButton_9.setMinimumSize(QtCore.QSize(0, 50)) self.pushButton_9.setObjectName("pushButton_9") self.gridLayout.addWidget(self.pushButton_9, 0, 2, 1, 1) self.pushButton_1 = QtWidgets.QPushButton(self.widget) self.pushButton_1.setMinimumSize(QtCore.QSize(0, 50)) self.pushButton_1.setObjectName("pushButton_1") self.gridLayout.addWidget(self.pushButton_1, 2, 0, 1, 1) self.pushButton_CHU = QtWidgets.QPushButton(self.widget) self.pushButton_CHU.setMinimumSize(QtCore.QSize(0, 50)) self.pushButton_CHU.setObjectName("pushButton_CHU") self.gridLayout.addWidget(self.pushButton_CHU, 4, 1, 1, 1) self.pushButton_8 = QtWidgets.QPushButton(self.widget) self.pushButton_8.setMinimumSize(QtCore.QSize(0, 50)) self.pushButton_8.setObjectName("pushButton_8") self.gridLayout.addWidget(self.pushButton_8, 0, 1, 1, 1) self.pushButton_CHENG = QtWidgets.QPushButton(self.widget) self.pushButton_CHENG.setMinimumSize(QtCore.QSize(0, 50)) self.pushButton_CHENG.setObjectName("pushButton_CHENG") self.gridLayout.addWidget(self.pushButton_CHENG, 4, 0, 1, 1) self.pushButton_2 = QtWidgets.QPushButton(self.widget) self.pushButton_2.setMinimumSize(QtCore.QSize(0, 50)) self.pushButton_2.setObjectName("pushButton_2") self.gridLayout.addWidget(self.pushButton_2, 2, 1, 1, 1) self.pushButton_5 = QtWidgets.QPushButton(self.widget) self.pushButton_5.setMinimumSize(QtCore.QSize(0, 50)) self.pushButton_5.setObjectName("pushButton_5") self.gridLayout.addWidget(self.pushButton_5, 1, 1, 1, 1) self.pushButton_JIA = QtWidgets.QPushButton(self.widget) self.pushButton_JIA.setMinimumSize(QtCore.QSize(0, 50)) self.pushButton_JIA.setObjectName("pushButton_JIA") self.gridLayout.addWidget(self.pushButton_JIA, 3, 0, 1, 1) self.pushButton = QtWidgets.QPushButton(self.widget) self.pushButton.setMinimumSize(QtCore.QSize(0, 50)) self.pushButton.setObjectName("pushButton") self.gridLayout.addWidget(self.pushButton, 4, 2, 1, 1) self.pushButton_DENGYU = QtWidgets.QPushButton(self.widget) self.pushButton_DENGYU.setMinimumSize(QtCore.QSize(0, 50)) self.pushButton_DENGYU.setObjectName("pushButton_DENGYU") self.gridLayout.addWidget(self.pushButton_DENGYU, 5, 0, 1, 3) self.verticalLayout.addLayout(self.gridLayout) self.retranslateUi(calculator) QtCore.QMetaObject.connectSlotsByName(calculator) def retranslateUi(self, calculator): _translate = QtCore.QCoreApplication.translate calculator.setWindowTitle(_translate("calculator", "计算器")) self.label.setText(_translate("calculator", "<html><head/><body><p align=\"center\"><span style=\" font-size:18pt; font-weight:600;\">=</span></p></body></html>")) self.pushButton_0.setText(_translate("calculator", "0")) self.pushButton_3.setText(_translate("calculator", "3")) self.pushButton_6.setText(_translate("calculator", "6")) self.pushButton_JIAN.setText(_translate("calculator", "-")) self.pushButton_4.setText(_translate("calculator", "4")) self.pushButton_7.setText(_translate("calculator", "7")) self.pushButton_9.setText(_translate("calculator", "9")) self.pushButton_1.setText(_translate("calculator", "1")) self.pushButton_CHU.setText(_translate("calculator", "/")) self.pushButton_8.setText(_translate("calculator", "8")) self.pushButton_CHENG.setText(_translate("calculator", "*")) self.pushButton_2.setText(_translate("calculator", "2")) self.pushButton_5.setText(_translate("calculator", "5")) self.pushButton_JIA.setText(_translate("calculator", "+")) self.pushButton.setText(_translate("calculator", "DEL")) self.pushButton_DENGYU.setText(_translate("calculator", "="))
posted on 2020-03-16 15:23 dandanduba 阅读(662) 评论(0) 编辑 收藏 举报