How's the average score at PyQt?
-
I need the program to take the average score, but I can't do it, I just decided to try PyQt, put Tkinter.
What's the problem?
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(412, 239)
self.label = QtWidgets.QLabel(Dialog)
self.label.setGeometry(QtCore.QRect(100, 10, 211, 31))
font = QtGui.QFont()
font.setFamily("Montserrat")
font.setPointSize(20)
font.setItalic(True)
self.label.setFont(font)
self.label.setObjectName("label")
self.one = QtWidgets.QPushButton(Dialog)
self.one.setGeometry(QtCore.QRect(20, 150, 61, 41))
font = QtGui.QFont()
font.setFamily("Montserrat SemiBold")
font.setPointSize(14)
font.setBold(True)
font.setUnderline(False)
font.setWeight(75)
self.one.setFont(font)
self.one.setStyleSheet("background-color: rgb(255, 170, 0);")
self.one.setObjectName("one")
self.two = QtWidgets.QPushButton(Dialog)
self.two.setGeometry(QtCore.QRect(100, 150, 61, 41))
font = QtGui.QFont()
font.setFamily("Montserrat SemiBold")
font.setPointSize(14)
font.setUnderline(False)
self.two.setFont(font)
self.two.setStyleSheet("background-color: rgb(255, 170, 0);")
self.two.setObjectName("two")
self.three = QtWidgets.QPushButton(Dialog)
self.three.setGeometry(QtCore.QRect(180, 150, 61, 41))
font = QtGui.QFont()
font.setFamily("Montserrat SemiBold")
font.setPointSize(14)
font.setUnderline(False)
self.three.setFont(font)
self.three.setStyleSheet("background-color: rgb(255, 170, 0);")
self.three.setObjectName("three")
self.four = QtWidgets.QPushButton(Dialog)
self.four.setGeometry(QtCore.QRect(260, 150, 61, 41))
font = QtGui.QFont()
font.setFamily("Montserrat SemiBold")
font.setPointSize(14)
font.setUnderline(False)
self.four.setFont(font)
self.four.setStyleSheet("background-color: rgb(255, 170, 0);")
self.four.setObjectName("four")
self.five = QtWidgets.QPushButton(Dialog)
self.five.setGeometry(QtCore.QRect(340, 150, 61, 41))
font = QtGui.QFont()
font.setFamily("Montserrat SemiBold")
font.setPointSize(14)
font.setBold(True)
font.setUnderline(False)
font.setWeight(75)
self.five.setFont(font)
self.five.setStyleSheet("background-color: rgb(255, 170, 0);")
self.five.setObjectName("five")
self.Marks = QtWidgets.QLabel(Dialog)
self.Marks.setGeometry(QtCore.QRect(10, 50, 391, 31))
font = QtGui.QFont()
font.setFamily("Montserrat Medium")
font.setPointSize(17)
font.setBold(False)
font.setItalic(False)
font.setUnderline(False)
font.setWeight(50)
font.setStrikeOut(False)
font.setKerning(True)
self.Marks.setFont(font)
self.Marks.setText("")
self.Marks.setAlignment(QtCore.Qt.AlignCenter)
self.Marks.setObjectName("Marks")
self.Result = QtWidgets.QLabel(Dialog)
self.Result.setGeometry(QtCore.QRect(140, 100, 131, 31))
font = QtGui.QFont()
font.setFamily("Montserrat Medium")
font.setPointSize(21)
self.Result.setFont(font)
self.Result.setMouseTracking(False)
self.Result.setLayoutDirection(QtCore.Qt.LeftToRight)
self.Result.setText("")
self.Result.setAlignment(QtCore.Qt.AlignCenter)
self.Result.setObjectName("Result")
self.Apply = QtWidgets.QPushButton(Dialog)
self.Apply.setGeometry(QtCore.QRect(130, 200, 75, 23))
font = QtGui.QFont()
font.setFamily("Montserrat")
font.setPointSize(10)
self.Apply.setFont(font)
self.Apply.setObjectName("Apply")
self.Clear = QtWidgets.QPushButton(Dialog)
self.Clear.setGeometry(QtCore.QRect(220, 200, 75, 23))
font = QtGui.QFont()
font.setFamily("Montserrat")
font.setPointSize(10)
self.Clear.setFont(font)
self.Clear.setObjectName("Clear")self.retranslateUi(Dialog) QtCore.QMetaObject.connectSlotsByName(Dialog) self.add_functions() def retranslateUi(self, Dialog): _translate = QtCore.QCoreApplication.translate Dialog.setWindowTitle(_translate("Dialog", "Dialog")) self.label.setText(_translate("Dialog", "Средний балл")) self.one.setText(_translate("Dialog", "1")) self.two.setText(_translate("Dialog", "2")) self.three.setText(_translate("Dialog", "3")) self.four.setText(_translate("Dialog", "4")) self.five.setText(_translate("Dialog", "5")) self.Apply.setText(_translate("Dialog", "Принять")) self.Clear.setText(_translate("Dialog", "Очистить")) def add_functions(self): self.one.clicked.connect(lambda: self.write_number(self.one.text())) self.two.clicked.connect(lambda: self.write_number(self.two.text())) self.three.clicked.connect(lambda: self.write_number(self.three.text())) self.four.clicked.connect(lambda: self.write_number(self.four.text())) self.five.clicked.connect(lambda: self.write_number(self.five.text())) self.Apply.clicked.connect(lambda: self.results()) self.Clear.clicked.connect(lambda: self.clear()) def write_number(self, number): self.marks.append(int(number)) self.Marks.setText(self.Marks.text() + number) def results(self, marks): marks = [] res = sum(marks) / len(marks) self.Result.setText(str(res)) def clear(self): self.Marks.setText("") self.Result.setText("")
if name == "main":
import sys
app = QtWidgets.QApplication(sys.argv)
Dialog = QtWidgets.QDialog()
ui = Ui_Dialog()
ui.setupUi(Dialog)
Dialog.show()
sys.exit(app.exec_())
-
Don't change the code generated by Qt Designer. Create another class, which is inherited from the view and use the class created to fill it.
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(412, 239)
self.label = QtWidgets.QLabel(Dialog)
self.label.setGeometry(QtCore.QRect(100, 10, 211, 31))
font = QtGui.QFont()
font.setFamily("Montserrat")
font.setPointSize(20)
font.setItalic(True)
self.label.setFont(font)
self.label.setObjectName("label")
self.one = QtWidgets.QPushButton(Dialog)
self.one.setGeometry(QtCore.QRect(20, 150, 61, 41))
font = QtGui.QFont()
font.setFamily("Montserrat SemiBold")
font.setPointSize(14)
font.setBold(True)
font.setUnderline(False)
font.setWeight(75)
self.one.setFont(font)
self.one.setStyleSheet("background-color: rgb(255, 170, 0);")
self.one.setObjectName("one")
self.two = QtWidgets.QPushButton(Dialog)
self.two.setGeometry(QtCore.QRect(100, 150, 61, 41))
font = QtGui.QFont()
font.setFamily("Montserrat SemiBold")
font.setPointSize(14)
font.setUnderline(False)
self.two.setFont(font)
self.two.setStyleSheet("background-color: rgb(255, 170, 0);")
self.two.setObjectName("two")
self.three = QtWidgets.QPushButton(Dialog)
self.three.setGeometry(QtCore.QRect(180, 150, 61, 41))
font = QtGui.QFont()
font.setFamily("Montserrat SemiBold")
font.setPointSize(14)
font.setUnderline(False)
self.three.setFont(font)
self.three.setStyleSheet("background-color: rgb(255, 170, 0);")
self.three.setObjectName("three")
self.four = QtWidgets.QPushButton(Dialog)
self.four.setGeometry(QtCore.QRect(260, 150, 61, 41))
font = QtGui.QFont()
font.setFamily("Montserrat SemiBold")
font.setPointSize(14)
font.setUnderline(False)
self.four.setFont(font)
self.four.setStyleSheet("background-color: rgb(255, 170, 0);")
self.four.setObjectName("four")
self.five = QtWidgets.QPushButton(Dialog)
self.five.setGeometry(QtCore.QRect(340, 150, 61, 41))
font = QtGui.QFont()
font.setFamily("Montserrat SemiBold")
font.setPointSize(14)
font.setBold(True)
font.setUnderline(False)
font.setWeight(75)
self.five.setFont(font)
self.five.setStyleSheet("background-color: rgb(255, 170, 0);")
self.five.setObjectName("five")
self.Marks = QtWidgets.QLabel(Dialog)
self.Marks.setGeometry(QtCore.QRect(10, 50, 391, 31))
font = QtGui.QFont()
font.setFamily("Montserrat Medium")
font.setPointSize(17)
font.setBold(False)
font.setItalic(False)
font.setUnderline(False)
font.setWeight(50)
font.setStrikeOut(False)
font.setKerning(True)
self.Marks.setFont(font)
self.Marks.setText("")
self.Marks.setAlignment(QtCore.Qt.AlignCenter)
self.Marks.setObjectName("Marks")
self.Result = QtWidgets.QLabel(Dialog)
self.Result.setGeometry(QtCore.QRect(140, 100, 131, 31))
font = QtGui.QFont()
font.setFamily("Montserrat Medium")
font.setPointSize(21)
self.Result.setFont(font)
self.Result.setMouseTracking(False)
self.Result.setLayoutDirection(QtCore.Qt.LeftToRight)
self.Result.setText("")
self.Result.setAlignment(QtCore.Qt.AlignCenter)
self.Result.setObjectName("Result")
self.Apply = QtWidgets.QPushButton(Dialog)
self.Apply.setGeometry(QtCore.QRect(130, 200, 75, 23))
font = QtGui.QFont()
font.setFamily("Montserrat")
font.setPointSize(10)
self.Apply.setFont(font)
self.Apply.setObjectName("Apply")
self.Clear = QtWidgets.QPushButton(Dialog)
self.Clear.setGeometry(QtCore.QRect(220, 200, 75, 23))
font = QtGui.QFont()
font.setFamily("Montserrat")
font.setPointSize(10)
self.Clear.setFont(font)
self.Clear.setObjectName("Clear")self.retranslateUi(Dialog) QtCore.QMetaObject.connectSlotsByName(Dialog) def retranslateUi(self, Dialog): _translate = QtCore.QCoreApplication.translate Dialog.setWindowTitle(_translate("Dialog", "Dialog")) self.label.setText(_translate("Dialog", "Средний балл")) self.one.setText(_translate("Dialog", "1")) self.two.setText(_translate("Dialog", "2")) self.three.setText(_translate("Dialog", "3")) self.four.setText(_translate("Dialog", "4")) self.five.setText(_translate("Dialog", "5")) self.Apply.setText(_translate("Dialog", "Принять")) self.Clear.setText(_translate("Dialog", "Очистить"))
class Dialog(QtWidgets.QDialog, Ui_Dialog):
def init(self):
super().init()
self.setupUi(self)self.marks = [] self.add_functions() def add_functions(self): self.one.clicked.connect(lambda: self.write_number(self.one.text())) self.two.clicked.connect(lambda: self.write_number(self.two.text())) self.three.clicked.connect(lambda: self.write_number(self.three.text())) self.four.clicked.connect(lambda: self.write_number(self.four.text())) self.five.clicked.connect(lambda: self.write_number(self.five.text())) self.Apply.clicked.connect(lambda: self.results()) self.Clear.clicked.connect(lambda: self.clear()) def write_number(self, number): self.marks.append(int(number)) self.Marks.setText(self.Marks.text() + number) def results(self): #, marks):
self.marks = []
if not self.marks: return res = sum(self.marks) / len(self.marks) self.Result.setText(str(res)) self.marks = [] def clear(self): self.Marks.setText("") self.Result.setText("")
if name == "main":
import sys
app = QtWidgets.QApplication(sys.argv)
w = Dialog()ui = Ui_Dialog()
ui.setupUi(Dialog)
w.show() sys.exit(app.exec_())