облегчить калькулятор на PyQt5
на днях я решил покопаться в PyQt5 и что-нибудь там сделать. Получился простенький калькулятор. И он весит 31МБ. Есть ли способы облегчить его?:) он умеет умножать, делить, возводить в степень, складывать и вычитать
Использовал при конвертации в .exe с помощью pyinstaller ключи: -F -w -i
импортировал только нужные модули
для вычисления указывал eval()
если будут какие нибудь советы то тоже говорите
import sys
import keyboard
from PyQt5 import QtCore
from PyQt5.QtWidgets import QPushButton, QLineEdit, QApplication, QWidget
nums = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0']
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName("Form")
Form.resize(364, 489)
Form.setMinimumSize(QtCore.QSize(364, 411))
Form.setMaximumSize(QtCore.QSize(364, 500))
Form.setAutoFillBackground(False)
Form.setStyleSheet("color: #f20081;\n"
"background-color:#454545;")
self.pushButton_7 = QPushButton(Form)
self.pushButton_7.setGeometry(QtCore.QRect(10, 330, 75, 71))
self.pushButton_7.setStyleSheet("QPushButton {\n"
" font: 25 28pt \"Microsoft YaHei Light\";\n"
"}\n"
"QPushButton:hover {\n"
" background-color: #545454;\n"
"}")
self.pushButton_7.setObjectName("pushButton_7")
self.pushButton_8 = QPushButton(Form)
self.pushButton_8.setGeometry(QtCore.QRect(100, 330, 75, 71))
self.pushButton_8.setStyleSheet("QPushButton {\n"
" font: 25 28pt \"Microsoft YaHei Light\";\n"
"}\n"
"QPushButton:hover {\n"
" background-color: #545454;\n"
"}")
self.pushButton_8.setObjectName("pushButton_8")
self.pushButton_4 = QPushButton(Form)
self.pushButton_4.setGeometry(QtCore.QRect(10, 250, 75, 71))
self.pushButton_4.setStyleSheet("QPushButton {\n"
" font: 25 28pt \"Microsoft YaHei Light\";\n"
"}\n"
"QPushButton:hover {\n"
" background-color: #545454;\n"
"}")
self.pushButton_4.setObjectName("pushButton_4")
self.pushButton_5 = QPushButton(Form)
self.pushButton_5.setGeometry(QtCore.QRect(100, 250, 75, 71))
self.pushButton_5.setStyleSheet("QPushButton {\n"
" font: 25 28pt \"Microsoft YaHei Light\";\n"
"}\n"
"QPushButton:hover {\n"
" background-color: #545454;\n"
"}")
self.pushButton_5.setObjectName("pushButton_5")
self.pushButton_9 = QPushButton(Form)
self.pushButton_9.setGeometry(QtCore.QRect(190, 330, 75, 71))
self.pushButton_9.setStyleSheet("QPushButton {\n"
" font: 25 28pt \"Microsoft YaHei Light\";\n"
"}\n"
"QPushButton:hover {\n"
" background-color: #545454;\n"
"}")
self.pushButton_9.setObjectName("pushButton_9")
self.pushButton_6 = QPushButton(Form)
self.pushButton_6.setGeometry(QtCore.QRect(190, 250, 75, 71))
self.pushButton_6.setStyleSheet("QPushButton {\n"
" font: 25 28pt \"Microsoft YaHei Light\";\n"
"}\n"
"QPushButton:hover {\n"
" background-color: #545454;\n"
"}")
self.pushButton_6.setObjectName("pushButton_6")
self.pushButton_3 = QPushButton(Form)
self.pushButton_3.setGeometry(QtCore.QRect(190, 170, 75, 71))
self.pushButton_3.setStyleSheet("QPushButton {\n"
" font: 25 28pt \"Microsoft YaHei Light\";\n"
"}\n"
"QPushButton:hover {\n"
" background-color: #545454;\n"
"}")
self.pushButton_3.setObjectName("pushButton_3")
self.pushButton_2 = QPushButton(Form)
self.pushButton_2.setGeometry(QtCore.QRect(100, 170, 75, 71))
self.pushButton_2.setStyleSheet("QPushButton {\n"
" font: 25 28pt \"Microsoft YaHei Light\";\n"
"}\n"
"QPushButton:hover {\n"
" background-color: #545454;\n"
"}")
self.pushButton_2.setObjectName("pushButton_2")
self.pushButton_1 = QPushButton(Form)
self.pushButton_1.setGeometry(QtCore.QRect(10, 170, 75, 71))
self.pushButton_1.setStyleSheet("QPushButton {\n"
" font: 25 28pt \"Microsoft YaHei Light\";\n"
"}\n"
"QPushButton:hover {\n"
" background-color: #545454;\n"
"}")
self.pushButton_1.setObjectName("pushButton_1")
self.pushButton_equals = QPushButton(Form)
self.pushButton_equals.setGeometry(QtCore.QRect(280, 330, 75, 151))
self.pushButton_equals.setMinimumSize(QtCore.QSize(75, 58))
self.pushButton_equals.setStyleSheet("QPushButton {\n"
" font: 25 28pt \"Microsoft YaHei Light\";\n"
"}\n"
"QPushButton:hover {\n"
" background-color: #545454;\n"
"}")
self.pushButton_equals.setObjectName("pushButton_equals")
self.pushButton_plus = QPushButton(Form)
self.pushButton_plus.setGeometry(QtCore.QRect(280, 170, 75, 151))
self.pushButton_plus.setStyleSheet("QPushButton {\n"
" font: 25 28pt \"Microsoft YaHei Light\";\n"
"}\n"
"QPushButton:hover {\n"
" background-color: #545454;\n"
"}")
self.pushButton_plus.setObjectName("pushButton_plus")
self.pushButton_minus = QPushButton(Form)
self.pushButton_minus.setGeometry(QtCore.QRect(280, 90, 75, 71))
self.pushButton_minus.setStyleSheet("QPushButton {\n"
" font: 25 28pt \"Microsoft YaHei Light\";\n"
"}\n"
"QPushButton:hover {\n"
" background-color: #545454;\n"
"}")
self.pushButton_minus.setObjectName("pushButton_minus")
self.pushButton_mult = QPushButton(Form)
self.pushButton_mult.setGeometry(QtCore.QRect(190, 90, 75, 71))
self.pushButton_mult.setStyleSheet("QPushButton {\n"
" font: 25 28pt \"Microsoft YaHei Light\";\n"
"}\n"
"QPushButton:hover {\n"
" background-color: #545454;\n"
"}")
self.pushButton_mult.setIconSize(QtCore.QSize(16, 16))
self.pushButton_mult.setObjectName("pushButton_mult")
self.NumLine = QLineEdit(Form)
self.NumLine.setGeometry(QtCore.QRect(10, 10, 341, 71))
self.NumLine.setStyleSheet("font: 25 28pt \"Microsoft YaHei Light\";")
self.NumLine.setText(" ")
self.NumLine.setReadOnly(True)
self.NumLine.setObjectName("NumLine")
self.pushButton_C = QPushButton(Form)
self.pushButton_C.setGeometry(QtCore.QRect(10, 90, 75, 71))
self.pushButton_C.setStyleSheet("QPushButton {\n"
" font: 25 28pt \"Microsoft YaHei Light\";\n"
"}\n"
"QPushButton:hover {\n"
" background-color: #545454;\n"
"}")
self.pushButton_C.setObjectName("pushButton_C")
self.pushButton_div = QPushButton(Form)
self.pushButton_div.setGeometry(QtCore.QRect(100, 90, 75, 71))
self.pushButton_div.setStyleSheet("QPushButton {\n"
" font: 25 24pt \"Microsoft YaHei Light\";\n"
"}\n"
"QPushButton:hover {\n"
" background-color: #545454;\n"
"}")
self.pushButton_div.setObjectName("pushButton_div")
self.pushButton_0 = QPushButton(Form)
self.pushButton_0.setGeometry(QtCore.QRect(10, 410, 161, 71))
self.pushButton_0.setStyleSheet("QPushButton {\n"
" font: 25 28pt \"Microsoft YaHei Light\";\n"
"}\n"
"QPushButton:hover {\n"
" background-color: #545454;\n"
"}")
self.pushButton_0.setObjectName("pushButton_0")
self.pushButton_pow = QPushButton(Form)
self.pushButton_pow.setGeometry(QtCore.QRect(190, 410, 75, 71))
self.pushButton_pow.setStyleSheet("QPushButton {\n"
" font: 25 28pt \"Microsoft YaHei Light\";\n"
"}\n"
"QPushButton:hover {\n"
" background-color: #545454;\n"
"}")
self.pushButton_pow.setObjectName("pushButton_pow")
self.retranslateUi(Form)
QtCore.QMetaObject.connectSlotsByName(Form)
def retranslateUi(self, Form):
_translate = QtCore.QCoreApplication.translate
Form.setWindowTitle(_translate("Form", "Form"))
self.pushButton_7.setText(_translate("Form", "7"))
self.pushButton_8.setText(_translate("Form", "8"))
self.pushButton_4.setText(_translate("Form", "4"))
self.pushButton_5.setText(_translate("Form", "5"))
self.pushButton_9.setText(_translate("Form", "9"))
self.pushButton_6.setText(_translate("Form", "6"))
self.pushButton_3.setText(_translate("Form", "3"))
self.pushButton_2.setText(_translate("Form", "2"))
self.pushButton_1.setText(_translate("Form", "1"))
self.pushButton_equals.setText(_translate("Form", "="))
self.pushButton_plus.setText(_translate("Form", "+"))
self.pushButton_minus.setText(_translate("Form", "-"))
self.pushButton_mult.setText(_translate("Form", "*"))
self.pushButton_C.setText(_translate("Form", "C"))
self.pushButton_div.setText(_translate("Form", "/"))
self.pushButton_0.setText(_translate("Form", "0"))
self.pushButton_pow.setText(_translate("Form", "**"))
if __name__ == "__main__":
# создание приложения
app = QApplication(sys.argv)
# init
Form = QWidget()
ui = Ui_Form()
ui.setupUi(Form)
Form.show()
# logic
def ZERO():
ui.NumLine.insert('0')
def ONE():
ui.NumLine.insert('1')
def TWO():
ui.NumLine.insert('2')
def THREE():
ui.NumLine.insert('3')
def FOUR():
ui.NumLine.insert('4')
def FIVE():
ui.NumLine.insert('5')
def SIX():
ui.NumLine.insert('6')
def SEVEN():
ui.NumLine.insert('7')
def EIGHT():
ui.NumLine.insert('8')
def NINE():
ui.NumLine.insert('9')
def PLUS():
if str(ui.NumLine.text())[-1] in nums:
ui.NumLine.insert('+')
def MINUS():
if str(ui.NumLine.text())[-1] in nums:
ui.NumLine.insert('-')
def MULT():
if str(ui.NumLine.text())[-1] in nums:
ui.NumLine.insert('*')
def DIV():
if str(ui.NumLine.text())[-1] in nums:
ui.NumLine.insert('/')
def POW():
if str(ui.NumLine.text())[-1] in nums:
ui.NumLine.insert('**')
def ERASE():
ui.NumLine.setText(" ")
def EQUALS():
if str(ui.NumLine.text())[0] != '0' and str(ui.NumLine.text())[-1] in nums:
f = ui.NumLine.text()
g = eval(f)
ui.NumLine.setText(str(g))
def DELEL():
ui.NumLine.backspace()
keyboard.add_hotkey('Backspace', DELEL)
keyboard.add_hotkey('Enter', EQUALS)
ui.pushButton_0.clicked.connect(ZERO)
ui.pushButton_1.clicked.connect(ONE)
ui.pushButton_2.clicked.connect(TWO)
ui.pushButton_3.clicked.connect(THREE)
ui.pushButton_4.clicked.connect(FOUR)
ui.pushButton_5.clicked.connect(FIVE)
ui.pushButton_6.clicked.connect(SIX)
ui.pushButton_7.clicked.connect(SEVEN)
ui.pushButton_8.clicked.connect(EIGHT)
ui.pushButton_9.clicked.connect(NINE)
ui.pushButton_plus.clicked.connect(PLUS)
ui.pushButton_minus.clicked.connect(MINUS)
ui.pushButton_mult.clicked.connect(MULT)
ui.pushButton_div.clicked.connect(DIV)
ui.pushButton_pow.clicked.connect(POW)
ui.pushButton_C.clicked.connect(ERASE)
ui.pushButton_equals.clicked.connect(EQUALS)
# main loop
sys.exit(app.exec_())
```
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
нет, размер меньше не получится. Ехе-шник много чего содержит, чтобы вы могли автономно его запускать.
А код я бы оформил так:
import sys
import keyboard
from PyQt5 import QtCore
from PyQt5.QtWidgets import QPushButton, QLineEdit, QApplication, QWidget
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName("Form")
Form.resize(364, 489)
Form.setMinimumSize(QtCore.QSize(364, 411))
Form.setMaximumSize(QtCore.QSize(364, 500))
Form.setAutoFillBackground(False)
Form.setStyleSheet("color: #f20081;\n"
"background-color:#454545;")
self.pushButton_7 = QPushButton(Form)
self.pushButton_7.setGeometry(QtCore.QRect(10, 330, 75, 71))
self.pushButton_7.setStyleSheet("QPushButton {\n"
" font: 25 28pt \"Microsoft YaHei Light\";\n"
"}\n"
"QPushButton:hover {\n"
" background-color: #545454;\n"
"}")
self.pushButton_7.setObjectName("pushButton_7")
self.pushButton_8 = QPushButton(Form)
self.pushButton_8.setGeometry(QtCore.QRect(100, 330, 75, 71))
self.pushButton_8.setStyleSheet("QPushButton {\n"
" font: 25 28pt \"Microsoft YaHei Light\";\n"
"}\n"
"QPushButton:hover {\n"
" background-color: #545454;\n"
"}")
self.pushButton_8.setObjectName("pushButton_8")
self.pushButton_4 = QPushButton(Form)
self.pushButton_4.setGeometry(QtCore.QRect(10, 250, 75, 71))
self.pushButton_4.setStyleSheet("QPushButton {\n"
" font: 25 28pt \"Microsoft YaHei Light\";\n"
"}\n"
"QPushButton:hover {\n"
" background-color: #545454;\n"
"}")
self.pushButton_4.setObjectName("pushButton_4")
self.pushButton_5 = QPushButton(Form)
self.pushButton_5.setGeometry(QtCore.QRect(100, 250, 75, 71))
self.pushButton_5.setStyleSheet("QPushButton {\n"
" font: 25 28pt \"Microsoft YaHei Light\";\n"
"}\n"
"QPushButton:hover {\n"
" background-color: #545454;\n"
"}")
self.pushButton_5.setObjectName("pushButton_5")
self.pushButton_9 = QPushButton(Form)
self.pushButton_9.setGeometry(QtCore.QRect(190, 330, 75, 71))
self.pushButton_9.setStyleSheet("QPushButton {\n"
" font: 25 28pt \"Microsoft YaHei Light\";\n"
"}\n"
"QPushButton:hover {\n"
" background-color: #545454;\n"
"}")
self.pushButton_9.setObjectName("pushButton_9")
self.pushButton_6 = QPushButton(Form)
self.pushButton_6.setGeometry(QtCore.QRect(190, 250, 75, 71))
self.pushButton_6.setStyleSheet("QPushButton {\n"
" font: 25 28pt \"Microsoft YaHei Light\";\n"
"}\n"
"QPushButton:hover {\n"
" background-color: #545454;\n"
"}")
self.pushButton_6.setObjectName("pushButton_6")
self.pushButton_3 = QPushButton(Form)
self.pushButton_3.setGeometry(QtCore.QRect(190, 170, 75, 71))
self.pushButton_3.setStyleSheet("QPushButton {\n"
" font: 25 28pt \"Microsoft YaHei Light\";\n"
"}\n"
"QPushButton:hover {\n"
" background-color: #545454;\n"
"}")
self.pushButton_3.setObjectName("pushButton_3")
self.pushButton_2 = QPushButton(Form)
self.pushButton_2.setGeometry(QtCore.QRect(100, 170, 75, 71))
self.pushButton_2.setStyleSheet("QPushButton {\n"
" font: 25 28pt \"Microsoft YaHei Light\";\n"
"}\n"
"QPushButton:hover {\n"
" background-color: #545454;\n"
"}")
self.pushButton_2.setObjectName("pushButton_2")
self.pushButton_1 = QPushButton(Form)
self.pushButton_1.setGeometry(QtCore.QRect(10, 170, 75, 71))
self.pushButton_1.setStyleSheet("QPushButton {\n"
" font: 25 28pt \"Microsoft YaHei Light\";\n"
"}\n"
"QPushButton:hover {\n"
" background-color: #545454;\n"
"}")
self.pushButton_1.setObjectName("pushButton_1")
self.pushButton_equals = QPushButton(Form)
self.pushButton_equals.setGeometry(QtCore.QRect(280, 330, 75, 151))
self.pushButton_equals.setMinimumSize(QtCore.QSize(75, 58))
self.pushButton_equals.setStyleSheet("QPushButton {\n"
" font: 25 28pt \"Microsoft YaHei Light\";\n"
"}\n"
"QPushButton:hover {\n"
" background-color: #545454;\n"
"}")
self.pushButton_equals.setObjectName("pushButton_equals")
self.pushButton_plus = QPushButton(Form)
self.pushButton_plus.setGeometry(QtCore.QRect(280, 170, 75, 151))
self.pushButton_plus.setStyleSheet("QPushButton {\n"
" font: 25 28pt \"Microsoft YaHei Light\";\n"
"}\n"
"QPushButton:hover {\n"
" background-color: #545454;\n"
"}")
self.pushButton_plus.setObjectName("pushButton_plus")
self.pushButton_minus = QPushButton(Form)
self.pushButton_minus.setGeometry(QtCore.QRect(280, 90, 75, 71))
self.pushButton_minus.setStyleSheet("QPushButton {\n"
" font: 25 28pt \"Microsoft YaHei Light\";\n"
"}\n"
"QPushButton:hover {\n"
" background-color: #545454;\n"
"}")
self.pushButton_minus.setObjectName("pushButton_minus")
self.pushButton_mult = QPushButton(Form)
self.pushButton_mult.setGeometry(QtCore.QRect(190, 90, 75, 71))
self.pushButton_mult.setStyleSheet("QPushButton {\n"
" font: 25 28pt \"Microsoft YaHei Light\";\n"
"}\n"
"QPushButton:hover {\n"
" background-color: #545454;\n"
"}")
self.pushButton_mult.setIconSize(QtCore.QSize(16, 16))
self.pushButton_mult.setObjectName("pushButton_mult")
self.NumLine = QLineEdit(Form)
self.NumLine.setGeometry(QtCore.QRect(10, 10, 341, 71))
self.NumLine.setStyleSheet("font: 25 28pt \"Microsoft YaHei Light\";")
self.NumLine.setText(" ")
self.NumLine.setReadOnly(True)
self.NumLine.setObjectName("NumLine")
self.pushButton_C = QPushButton(Form)
self.pushButton_C.setGeometry(QtCore.QRect(10, 90, 75, 71))
self.pushButton_C.setStyleSheet("QPushButton {\n"
" font: 25 28pt \"Microsoft YaHei Light\";\n"
"}\n"
"QPushButton:hover {\n"
" background-color: #545454;\n"
"}")
self.pushButton_C.setObjectName("pushButton_C")
self.pushButton_div = QPushButton(Form)
self.pushButton_div.setGeometry(QtCore.QRect(100, 90, 75, 71))
self.pushButton_div.setStyleSheet("QPushButton {\n"
" font: 25 24pt \"Microsoft YaHei Light\";\n"
"}\n"
"QPushButton:hover {\n"
" background-color: #545454;\n"
"}")
self.pushButton_div.setObjectName("pushButton_div")
self.pushButton_0 = QPushButton(Form)
self.pushButton_0.setGeometry(QtCore.QRect(10, 410, 161, 71))
self.pushButton_0.setStyleSheet("QPushButton {\n"
" font: 25 28pt \"Microsoft YaHei Light\";\n"
"}\n"
"QPushButton:hover {\n"
" background-color: #545454;\n"
"}")
self.pushButton_0.setObjectName("pushButton_0")
self.pushButton_pow = QPushButton(Form)
self.pushButton_pow.setGeometry(QtCore.QRect(190, 410, 75, 71))
self.pushButton_pow.setStyleSheet("QPushButton {\n"
" font: 25 28pt \"Microsoft YaHei Light\";\n"
"}\n"
"QPushButton:hover {\n"
" background-color: #545454;\n"
"}")
self.pushButton_pow.setObjectName("pushButton_pow")
self.retranslateUi(Form)
QtCore.QMetaObject.connectSlotsByName(Form)
def retranslateUi(self, Form):
_translate = QtCore.QCoreApplication.translate
Form.setWindowTitle(_translate("Form", "Form"))
self.pushButton_7.setText(_translate("Form", "7"))
self.pushButton_8.setText(_translate("Form", "8"))
self.pushButton_4.setText(_translate("Form", "4"))
self.pushButton_5.setText(_translate("Form", "5"))
self.pushButton_9.setText(_translate("Form", "9"))
self.pushButton_6.setText(_translate("Form", "6"))
self.pushButton_3.setText(_translate("Form", "3"))
self.pushButton_2.setText(_translate("Form", "2"))
self.pushButton_1.setText(_translate("Form", "1"))
self.pushButton_equals.setText(_translate("Form", "="))
self.pushButton_plus.setText(_translate("Form", "+"))
self.pushButton_minus.setText(_translate("Form", "-"))
self.pushButton_mult.setText(_translate("Form", "*"))
self.pushButton_C.setText(_translate("Form", "C"))
self.pushButton_div.setText(_translate("Form", "/"))
self.pushButton_0.setText(_translate("Form", "0"))
self.pushButton_pow.setText(_translate("Form", "**"))
class Demo(QWidget, Ui_Form):
def __init__(self):
super(Demo, self).__init__()
self.setupUi(self)
self.nums = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0']
keyboard.add_hotkey('Backspace', self.NumLine.backspace) # !!!
keyboard.add_hotkey('Enter', self.equals)
self.pushButton_0.clicked.connect(lambda: self.NumLine.insert('0')) # lambda
self.pushButton_1.clicked.connect(lambda: self.NumLine.insert('1'))
self.pushButton_2.clicked.connect(lambda: self.NumLine.insert('2'))
self.pushButton_3.clicked.connect(lambda: self.NumLine.insert('3'))
self.pushButton_4.clicked.connect(lambda: self.NumLine.insert('4'))
self.pushButton_5.clicked.connect(lambda: self.NumLine.insert('5'))
self.pushButton_6.clicked.connect(lambda: self.NumLine.insert('6'))
self.pushButton_7.clicked.connect(lambda: self.NumLine.insert('7'))
self.pushButton_8.clicked.connect(lambda: self.NumLine.insert('8'))
self.pushButton_9.clicked.connect(lambda: self.NumLine.insert('9'))
self.pushButton_plus.clicked.connect(self.plus)
self.pushButton_minus.clicked.connect(self.minus)
self.pushButton_mult.clicked.connect(self.mult)
self.pushButton_div.clicked.connect(self.div)
self.pushButton_pow.clicked.connect(self.pow)
self.pushButton_C.clicked.connect(self.NumLine.clear) # +++
self.pushButton_equals.clicked.connect(self.equals)
def equals(self):
if self.NumLine.text()[0] != '0' and self.NumLine.text()[-1] in self.nums:
f = self.NumLine.text()
g = eval(f)
self.NumLine.setText(str(g))
def plus(self):
if self.NumLine.text()[-1] in self.nums:
self.NumLine.insert('+')
def minus(self):
if self.NumLine.text()[-1] in self.nums:
self.NumLine.insert('-')
def mult(self):
if self.NumLine.text()[-1] in self.nums:
self.NumLine.insert('*')
def div(self):
if self.NumLine.text()[-1] in self.nums:
self.NumLine.insert('/')
def pow(self):
if self.NumLine.text()[-1] in self.nums:
self.NumLine.insert('**')
if __name__ == "__main__":
app = QApplication(sys.argv)
Form = Demo()
Form.show()
sys.exit(app.exec_())
