Кнопка "Запустить" не работает, в чем ошибка и как ее решить?
import sys
from datetime import datetime
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QFileDialog, QMessageBox, QApplication, \
QLineEdit, QMainWindow
class MyWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.setEnabled(True)
MainWindow.resize(800, 608)
MainWindow.setStyleSheet("background-color: #7FFF00")
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.lineEdit_2 = QtWidgets.QLineEdit(self.centralwidget)
self.lineEdit_2.setGeometry(QtCore.QRect(220, 300, 301, 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.lineEdit_3 = QtWidgets.QLineEdit(self.centralwidget)
self.lineEdit_3.setGeometry(QtCore.QRect(220, 420, 311, 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")
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.lineEdit_3.setText(_translate("MainWindow", "ваывавы"))
self.pushButton_2.setText(_translate("MainWindow", "Запустить"))
self.label_3.setText(_translate("MainWindow", "Введите имя файла"))
self.label_4.setText(_translate("MainWindow", " Выберите тип"))
self.label_5.setText(_translate("MainWindow", " Введите ключ от 1 до 90"))
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)
def __init__(self, parent=None):
super(MyWindow, self).__init__(parent)
self.lineedit = QLineEdit(self)
self.lineEdit_2 = QLineEdit()
self.lineEdit_3 = QLineEdit()
def openFileNameDialog(self):
options = QFileDialog.Options()
options |= QFileDialog.DontUseNativeDialog
global filelist
fileName, _ = QFileDialog.getOpenFileName(
self,
"Select Text file",
"",
"Text Files (*.txt)",
options=options
)
if not fileName:
fileName = None
print(fileName)
# elf.lineedit.setText(fileName)
# lineEdit
self.lineEdit.setText(fileName) # +++ lineEdit
def ciphering(self):
self.filename = self.lineedit.text()
self.optfilename = self.lineedit_2.text()
self.process = self.combo.currentText()
self.key = self.lineedit_3.text()
assert isinstance(self.key, object)
password_key = int(self.key)
store = ''
Letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz' \
'!@#$%&*(){}[]<>/\|";:\n-=+.,?0123456789'
now = datetime.now()
print(now)
option_1 = self.process
if option_1 == 'Зашифровать':
print('Ok Sir!..You Selected({0})'.format(option_1))
file = self.filename
if password_key == 0:
QMessageBox.critical(self, "Incorrect Encryption Key Entered",
"Please enter Encryption key in range of 1 - 90.")
else:
print("password key: ", password_key)
if file.endswith('.txt'):
try:
file = open(file, 'r').read()
print('Congratualtions output file saved.')
except:
print('Filename Error: Please! Enter File name in txt form/Enter correct address of file.')
for i in file:
if i in Letters:
number = Letters.find(i)
try:
number = number + int(password_key)
except:
print('Key Error: You Enter a Incorrect key.')
break
if number >= len(Letters):
number = number - len(Letters)
elif number < 0:
number = number + len(Letters)
store = store + Letters[number]
else:
store = store + i
save_file = open('{}.txt'.format(self.optfilename), 'w')
save_file.write(store)
save_file.close()
QMessageBox.about(self, "аптаптаптаптап.",
"птататптатпа {} апттпатаппт.".format(self.process))
else:
QMessageBox.critical(self, "тпата", "тпаттата.")
elif option_1 == 'Расшифровать':
print(' аптапаптпа({0})'.format(option_1))
file = self.filename
if password_key == 0:
QMessageBox.critical(self, "апркепр.")
else:
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 = store + i
save_file = open('{}.txt'.format(self.optfilename), 'w')
save_file.write(store)
save_file.close()
QMessageBox.about(self, "Процесс завершился.",
"поздравляю {} успешно.".format(self.process))
else:
QMessageBox.critical(self, "Ошибка файла", "Введите txt форму .")
if __name__ == "__main__":
App = QApplication(sys.argv)
window = Engine()
window.show()
sys.exit(App.exec())
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
Я отметил для вас строки, которые надо исправить.
import sys
from datetime import datetime
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QFileDialog, QMessageBox, QApplication, \
QLineEdit, QMainWindow
class MyWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.setEnabled(True)
MainWindow.resize(800, 608)
MainWindow.setStyleSheet("background-color: #7FFF00")
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("")
# !!! было стало
# +++ lineEdit_2 ----> lineEdit_3
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.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", " Введите ключ от 1 до 90"))
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.ciphering) # +++ !!!
# ??? def __init__(self, parent=None):
# ??? super(MyWindow, self).__init__(parent)
# ??? self.lineedit = QLineEdit(self)
# ??? self.lineEdit_2 = QLineEdit()
# ??? self.lineEdit_3 = QLineEdit()
def openFileNameDialog(self):
options = QFileDialog.Options()
options |= QFileDialog.DontUseNativeDialog
# ??? global filelist
fileName, _ = QFileDialog.getOpenFileName(
self,
"Select Text file",
"",
"Text Files (*.txt)",
options=options
)
if not fileName:
fileName = None
print(fileName)
# elf.lineedit.setText(fileName)
# lineEdit
self.lineEdit.setText(fileName) # +++ lineEdit
def ciphering(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()
# -----------------------------> v <-----------------------------------
self.filename = self.lineEdit.text() # +++
# self.optfilename = self.lineedit_2.text()
# --------------------------------> v <--------------------------------
self.optfilename = self.lineEdit_2.text() # +++
# self.process = self.combo.currentText()
# -----------------------------> vvv <----------------------------------
self.process = self.comboBox.currentText() # +++
# self.key = self.lineedit_3.text()
# ------------------------> v <-----------------------------------------
self.key = self.lineEdit_3.text() # +++
assert isinstance(self.key, object)
password_key = int(self.key)
store = ''
Letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz' \
'!@#$%&*(){}[]<>/\|";:\n-=+.,?0123456789'
now = datetime.now()
print(now)
option_1 = self.process
if option_1 == 'Зашифровать':
print('Ok Sir!..You Selected({0})'.format(option_1))
file = self.filename
if password_key == 0:
QMessageBox.critical(self, "Incorrect Encryption Key Entered",
"Please enter Encryption key in range of 1 - 90.")
else:
print("password key: ", password_key)
if file.endswith('.txt'):
try:
file = open(file, 'r').read()
print('Congratualtions output file saved.')
except:
print('Filename Error: Please! Enter File name in txt form/Enter correct address of file.')
for i in file:
if i in Letters:
number = Letters.find(i)
try:
number = number + int(password_key)
except:
print('Key Error: You Enter a Incorrect key.')
break
if number >= len(Letters):
number = number - len(Letters)
elif number < 0:
number = number + len(Letters)
store = store + Letters[number]
else:
store = store + i
save_file = open('{}.txt'.format(self.optfilename), 'w')
save_file.write(store)
save_file.close()
QMessageBox.about(self, "аптаптаптаптап.",
"птататптатпа {} апттпатаппт.".format(self.process))
else:
QMessageBox.critical(self, "тпата", "тпаттата.")
elif option_1 == 'Расшифровать':
print(' аптапаптпа({0})'.format(option_1))
file = self.filename
if password_key == 0:
QMessageBox.critical(self, "апркепр.")
else:
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 = store + i
save_file = open('{}.txt'.format(self.optfilename), 'w')
save_file.write(store)
save_file.close()
QMessageBox.about(self, "Процесс завершился.",
"поздравляю {} успешно.".format(self.process))
else:
QMessageBox.critical(self, "Ошибка файла", "Введите txt форму .")
if __name__ == "__main__":
App = QApplication(sys.argv)
window = Engine()
window.show()
sys.exit(App.exec())
