Как сделать так чтобы при запуске программа не закрывалась?
import hashlib
import sys
from datetime import datetime
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QFileDialog, QMessageBox, QApplication, \
QMainWindow
class MyWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.setEnabled(True)
MainWindow.resize(800, 608)
MainWindow.setStyleSheet("background-color: #8FBC8F")
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
self.lineEdit.setGeometry(QtCore.QRect(220, 80, 301, 61))
self.lineEdit.setStyleSheet("background-color: #22222e;\n"
"border: 2px solid #6B8E23;\n"
"border-radius: 30;\n"
"color: white")
self.lineEdit.setObjectName("lineEdit")
self.pushButton = QtWidgets.QPushButton(self.centralwidget)
self.pushButton.setGeometry(QtCore.QRect(550, 80, 151, 61))
self.pushButton.setStyleSheet("QPushButton {\n"
" color: white;\n"
" background-color:#6B8E23;\n"
" border-radius: 30; \n"
"}\n"
"\n"
"QPushButton:pressed {\n"
"background-color: #90EE90\n"
"}")
self.pushButton.setObjectName("pushButton")
self.comboBox = QtWidgets.QComboBox(self.centralwidget)
self.comboBox.setGeometry(QtCore.QRect(220, 210, 311, 31))
self.comboBox.setStyleSheet("background-color: #22222e;\n"
"border: 2px solid #6B8E23;\n"
"border-radius: 30;\n"
"color: white")
self.comboBox.setObjectName("comboBox")
self.comboBox.addItem("")
self.comboBox.addItem("")
self.comboBox.addItem("")
self.lineEdit_3 = QtWidgets.QLineEdit(self.centralwidget)
self.lineEdit_3.setGeometry(QtCore.QRect(220, 300, 301, 61))
self.lineEdit_3.setStyleSheet("background-color: #22222e;\n"
"border: 2px solid #6B8E23;\n"
"border-radius: 30;\n"
"color: white")
self.lineEdit_3.setObjectName("lineEdit_3")
# !!! было стало
# +++ lineEdit_3 ----> lineEdit_2
self.lineEdit_2 = QtWidgets.QLineEdit(self.centralwidget)
self.lineEdit_2.setGeometry(QtCore.QRect(220, 420, 311, 61))
self.lineEdit_2.setStyleSheet("background-color: #22222e;\n"
"border: 2px solid #6B8E23;\n"
"border-radius: 30;\n"
"color: white")
self.lineEdit_2.setObjectName("lineEdit_2")
self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
self.pushButton_2.setGeometry(QtCore.QRect(300, 500, 151, 61))
self.pushButton_2.setStyleSheet("QPushButton {\n"
" color: white;\n"
" background-color:#6B8E23;\n"
" border-radius: 30; \n"
"}\n"
"\n"
"QPushButton:pressed {\n"
"background-color: #90EE90\n"
"}")
self.pushButton_2.setObjectName("pushButton_2")
self.label_3 = QtWidgets.QLabel(self.centralwidget)
self.label_3.setGeometry(QtCore.QRect(270, 50, 261, 20))
font = QtGui.QFont()
font.setPointSize(12)
font.setBold(True)
font.setWeight(75)
self.label_3.setFont(font)
self.label_3.setStyleSheet("QLabel {\n"
" color: white;\n"
" border-radius: 30;\n"
"\n"
"}")
self.label_3.setObjectName("label_3")
self.label_4 = QtWidgets.QLabel(self.centralwidget)
self.label_4.setGeometry(QtCore.QRect(240, 180, 261, 20))
font = QtGui.QFont()
font.setPointSize(12)
font.setBold(True)
font.setWeight(75)
self.label_4.setFont(font)
self.label_4.setStyleSheet("QLabel {\n"
" color: white;\n"
" border-radius: 30;\n"
"\n"
"}")
self.label_4.setObjectName("label_4")
self.label_5 = QtWidgets.QLabel(self.centralwidget)
self.label_5.setGeometry(QtCore.QRect(230, 270, 261, 20))
font = QtGui.QFont()
font.setPointSize(12)
font.setBold(True)
font.setWeight(75)
self.label_5.setFont(font)
self.label_5.setStyleSheet("QLabel {\n"
" color: white;\n"
" border-radius: 30;\n"
"\n"
"}")
self.label_5.setObjectName("label_5")
self.label_6 = QtWidgets.QLabel(self.centralwidget)
self.label_6.setGeometry(QtCore.QRect(250, 390, 261, 20))
font = QtGui.QFont()
font.setPointSize(12)
font.setBold(True)
font.setWeight(75)
self.label_6.setFont(font)
self.label_6.setStyleSheet("QLabel {\n"
" color: white;\n"
" border-radius: 30;\n"
"\n"
"}")
self.label_6.setObjectName("label_6")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 21))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.pushButton.setText(_translate("MainWindow", "Выбрать файл"))
self.comboBox.setItemText(0, _translate("MainWindow", "Зашифровать"))
self.comboBox.setItemText(1, _translate("MainWindow", "Расшифровать"))
self.comboBox.setItemText(2, _translate("MainWindow", "Хешировать"))
# ??? self.lineEdit_3.setText(_translate("MainWindow", "lineEdit_3"))
self.pushButton_2.setText(_translate("MainWindow", "Запустить"))
self.label_3.setText(_translate("MainWindow", "Введите имя файла"))
self.label_4.setText(_translate("MainWindow", " Выберите тип"))
self.label_5.setText(_translate("MainWindow", " Введите ключ "))
self.label_6.setText(_translate("MainWindow", " Куда вывести"))
class Engine(QMainWindow, MyWindow):
def __init__(self) -> None:
super().__init__()
self.setupUi(self)
self.pushButton.clicked.connect(self.openFileNameDialog)
self.pushButton_2.clicked.connect(self.shifr) # +++ !!!
def openFileNameDialog(self):
options = QFileDialog.Options()
options |= QFileDialog.DontUseNativeDialog
fileName, _ = QFileDialog.getOpenFileName(
self,
"Select Text file",
"",
"Text Files (*.txt)",
options=options
)
if not fileName:
fileName = None
print(fileName)
self.lineEdit.setText(fileName) # +++ lineEdit
def shifr(self):
if not self.lineEdit.text() or \
not self.lineEdit_2.text() or \
not self.lineEdit_3.text():
msg = QMessageBox.information(None, 'Внимание', 'Заполните поля ввода.')
return
self.filename = self.lineEdit.text() # +++
self.optfilename = self.lineEdit_2.text() # +++
self.process = self.comboBox.currentText() # +++
self.key = self.lineEdit_3.text() # +++
assert isinstance(self.key, object)
password_key = int(self.key)
store = ''
Letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя' \
'!@#$%&*(){}[]<>/\|";:\n-=+.,?0123456789'
now = datetime.now()
print(now)
option_1 = self.process
if option_1 == 'Зашифровать':
print('Хорошо !.. Вы выбрали({0})'.format(option_1))
file = self.filename
if password_key == 0:
QMessageBox.critical(self, "Введен неправильный ключ шифрования",
"Введите ключ шифрования в диапазоне от 1 до 90.")
else:
print("ключ пароля: ", password_key)
if file.endswith('.txt'):
try:
file = open(file, 'r').read()
print('Выходной файл поздравления сохранен.')
except:
print('Ошибка имени файла: Пожалуйста! Введите имя файла в текстовой форме/Введите правильный адрес файла')
for i in file:
if i in Letters:
number = Letters.find(i)
try:
number = number + int(password_key)
except:
print('Ошибка ключа: вы вводите неверный ключ.')
break
if number >= len(Letters):
number = number - len(Letters)
elif number < 0:
number = number + len(Letters)
store = store + Letters[number]
else:
store += i
with open('{}.txt'.format(self.optfilename), 'w') as f: f.write(store)
QMessageBox.about(self.process, "Процесс завершен., Поздравляем! {} успешно выполнено.".format(self.process),
"123")
else:
QMessageBox.critical(self, "Ошибка имени файла», «Пожалуйста! Введите только текстовую форму.")
elif option_1 == 'Расшифровать':
print(' Вы выбрали({0})'.format(option_1))
file = self.filename
if password_key == 0:
QMessageBox.critical(self,
"Введен неверный ключ шифрования», «Введите ключ шифрования в диапазоне от 1 до 90.")
else:
if file.endswith('.txt'):
try:
file = open(file, 'r').read()
print('Выходной файл сохранен.')
except:
print('Ошибка имени файла: Пожалуйста! Введите имя файла в формате txt.')
for i in file:
if i in Letters:
number = Letters.find(i)
try:
number = number - int(password_key)
except:
print('Ошибка ключа: вы вводите неверный ключ.')
break
if number >= len(Letters):
number = number - len(Letters)
elif number < 0:
number = number + len(Letters)
store = store + Letters[number]
else:
store += i
with open('{}.txt'.format(self.optfilename), 'w') as f: f.write(store)
QMessageBox.about(self.process,
"Процесс завершен., Поздравляем! {} успешно выполнено.".format(self.process),
"123")
else:
QMessageBox.critical(self, "Ошибка файла", "Введите txt форму .")
if __name__ == "__main__":
App = QApplication(sys.argv)
window = Engine()
window.show()
sys.exit(App.exec())
Источник: Stack Overflow на русском