Как сделать приложение .exe на python и PyQT5
Подскажите как можно компилировать приложение в установочный exe файл, и так чтобы вместе компилировались дополнительные файлы excel, которые нужны для расчета. для примера приложен код.
import sys
import pandas as pd
from PyQt5.QtWidgets import QMainWindow, QLabel, QGridLayout, \
QWidget, QPushButton, QDialog, QLineEdit, QVBoxLayout, \
QFormLayout, QMessageBox, QApplication
from PyQt5.QtCore import QSize
df = pd.read_excel("df.xlsx")
class Dialog(QDialog):
def __init__(self, parent):
super(Dialog, self).__init__()
self.parent = parent
self.x = QLineEdit(self)
self.y = QLineEdit(self)
self.button = QPushButton('Выполнить расчет.', self)
self.button.clicked.connect(self.onClicked)
layout = QFormLayout(self)
layout.addRow("x:", self.x)
layout.addRow(QLabel("y:"), self.y)
layout.addRow('', self.button)
def onClicked(self):
if self.x.text() and self.x.text():
try:
x = float(self.x.text())
y = float(self.y.text())
except:
QMessageBox.information(
self,
'Information',
'Некорректно введены данные. Повторите ввод данных.')
return
self.parent.label.setText(f'{x} + {y} = {x + y:.3f}')
self.close()
else:
QMessageBox.information(
self,
'Information',
'Нет данных для расчета.')
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.centralWidget = QWidget()
self.setCentralWidget(self.centralWidget)
self.date = None
self.label = QLabel()
pybutton = QPushButton('Click me', self)
pybutton.clicked.connect(self.clickMethod)
self.dialog = Dialog(self)
layout = QVBoxLayout(self.centralWidget)
layout.addWidget(self.label)
layout.addWidget(pybutton)
def calc(self):
self.dialog.exec_()
# return 10 + 20 # Данные которые вводятся пользователем
def clickMethod(self):
self.date = self.calc()
if __name__ == "__main__":
app = QApplication(sys.argv)
mainWin = MainWindow()
mainWin.resize(300, 200)
mainWin.setWindowTitle("Htllo PyQt")
mainWin.show()
sys.exit(app.exec_())
Источник: Stack Overflow на русском