Отобразить в QTextEdit результат шифрования
Питон изучаю недавно.
И в общем-то нужно сделать шифр Цезаря, и вроде бы всё ок, но только я не знаю как собранную и обработанную информацию, перевести в текст бокс.
Искал в инете по-прежнему не удаётся. Очень надеюсь на вашу помощь.
# -*- coding: utf-8 -*-
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(464, 319)
self.bt_shifr = QtWidgets.QPushButton(Dialog)
self.bt_shifr.setGeometry(QtCore.QRect(10, 170, 111, 23))
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(12)
font.setBold(False)
font.setItalic(True)
font.setWeight(9)
self.bt_shifr.setFont(font)
self.bt_shifr.setStyleSheet("font: 75 italic 12pt \"Times New Roman\";")
self.bt_shifr.setObjectName("bt_shifr")
self.bt_exit = QtWidgets.QPushButton(Dialog)
self.bt_exit.setGeometry(QtCore.QRect(350, 280, 75, 23))
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(12)
font.setBold(False)
font.setItalic(True)
font.setWeight(9)
self.bt_exit.setFont(font)
self.bt_exit.setStyleSheet("font: 75 italic 12pt \"Times New Roman\";")
self.bt_exit.setObjectName("bt_exit")
self.bt_exit.clicked.connect(sys.exit)
self.ok_vvoda = QtWidgets.QTextEdit(Dialog)
self.ok_vvoda.setGeometry(QtCore.QRect(10, 70, 151, 91))
self.ok_vvoda.setObjectName("ok_vvoda")
self.okn_result = QtWidgets.QTextEdit(Dialog)
self.okn_result.setGeometry(QtCore.QRect(10, 230, 151, 81))
self.okn_result.setObjectName("okn_result")
self.bt_shifr.clicked.connect(self.osn)
self.name_proekt = QtWidgets.QLabel(Dialog)
self.name_proekt.setGeometry(QtCore.QRect(10, 0, 141, 51))
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(14)
font.setBold(False)
font.setItalic(True)
font.setWeight(9)
self.name_proekt.setFont(font)
self.name_proekt.setToolTipDuration(-1)
self.name_proekt.setStyleSheet("font: 75 italic 14pt \"Times New Roman\";")
self.name_proekt.setObjectName("name_proekt")
self.shag_shifr = QtWidgets.QLabel(Dialog)
self.shag_shifr.setGeometry(QtCore.QRect(200, 30, 131, 31))
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(12)
font.setBold(False)
font.setItalic(True)
font.setWeight(9)
self.shag_shifr.setFont(font)
self.shag_shifr.setStyleSheet("font: 75 italic 12pt \"Times New Roman\";")
self.shag_shifr.setObjectName("shag_shifr")
self.resul = QtWidgets.QLabel(Dialog)
self.resul.setGeometry(QtCore.QRect(20, 200, 91, 16))
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(12)
font.setBold(False)
font.setItalic(True)
font.setWeight(9)
self.resul.setFont(font)
self.resul.setStyleSheet("font: 75 italic 12pt \"Times New Roman\";")
self.resul.setObjectName("resul")
self.okn_shag = QtWidgets.QLineEdit(Dialog)
self.okn_shag.setGeometry(QtCore.QRect(200, 60, 121, 20))
self.okn_shag.setMaxLength(99)
self.okn_shag.setObjectName("okn_shag")
self.langvod = QtWidgets.QLineEdit(Dialog)
self.langvod.setGeometry(QtCore.QRect(200, 110, 121, 20))
self.langvod.setText("")
self.langvod.setMaxLength(2)
self.langvod.setObjectName("langvod")
self.viborlang = QtWidgets.QLabel(Dialog)
self.viborlang.setGeometry(QtCore.QRect(200, 90, 91, 16))
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(11)
font.setBold(False)
font.setItalic(True)
font.setWeight(9)
self.viborlang.setFont(font)
self.viborlang.setStyleSheet("font: 75 italic 11pt \"Times New Roman\";")
self.viborlang.setObjectName("viborlang")
self.retranslateUi(Dialog)
QtCore.QMetaObject.connectSlotsByName(Dialog)
def retranslateUi(self, Dialog):
_translate = QtCore.QCoreApplication.translate
Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
self.bt_shifr.setText(_translate("Dialog", "Шифрование"))
self.bt_exit.setText(_translate("Dialog", "Выйти"))
self.ok_vvoda.setHtml(_translate("Dialog", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:\'MS Shell Dlg 2\'; font-size:8.25pt; font-weight:400; font-style:normal;\">\n"
"<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><br /></p></body></html>"))
self.name_proekt.setText(_translate("Dialog", " Шифр Цезаря"))
self.shag_shifr.setText(_translate("Dialog", "Шаг шифравания:"))
self.resul.setText(_translate("Dialog", "Результат:"))
self.viborlang.setText(_translate("Dialog", "Язык RU/EN:"))
def osn(self):
alfavit_eu = 'ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ'
alfavit_ru = 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ'
if self.langvod == "ru":
for i in self.ok_vvoda:
host=alfavit_ru.find(i)
new_host=host+self.okn_shag
if i in alfvit_ru:
itog += alfavit_ru[new_host]
else:
itog += i
else:
for i in self.ok_vvoda(i):
new_host = host + self.okn_shag
if i in alfavit_en:
itog+= alfavit_en[new_host]
else:
itog += i
self.okn_result.setText("Результат" + str(itog))
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_())
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
Я не проверял ваш алгоритм, а покажу вам как полученный результат получить в текст боксе, если вы выберите Язык ru.
И еще. НИКОГДА НЕ ИЗМЕНЯЙТЕ код, сгенерированный Qt Designer, НИКОГДА.
Создайте другой класс, который наследуется от соответствующего виджета, и используйте созданный класс для его заполнения.
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(464, 319)
self.bt_shifr = QtWidgets.QPushButton(Dialog)
self.bt_shifr.setGeometry(QtCore.QRect(10, 170, 111, 23))
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(12)
font.setBold(False)
font.setItalic(True)
font.setWeight(9)
self.bt_shifr.setFont(font)
self.bt_shifr.setStyleSheet("font: 75 italic 12pt \"Times New Roman\";")
self.bt_shifr.setObjectName("bt_shifr")
self.bt_exit = QtWidgets.QPushButton(Dialog)
self.bt_exit.setGeometry(QtCore.QRect(350, 280, 75, 23))
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(12)
font.setBold(False)
font.setItalic(True)
font.setWeight(9)
self.bt_exit.setFont(font)
self.bt_exit.setStyleSheet("font: 75 italic 12pt \"Times New Roman\";")
self.bt_exit.setObjectName("bt_exit")
self.bt_exit.clicked.connect(sys.exit)
self.ok_vvoda = QtWidgets.QTextEdit(Dialog)
self.ok_vvoda.setGeometry(QtCore.QRect(10, 70, 151, 91))
self.ok_vvoda.setObjectName("ok_vvoda")
self.okn_result = QtWidgets.QTextEdit(Dialog)
self.okn_result.setGeometry(QtCore.QRect(10, 230, 151, 81))
self.okn_result.setObjectName("okn_result")
# self.bt_shifr.clicked.connect(self.osn)
self.name_proekt = QtWidgets.QLabel(Dialog)
self.name_proekt.setGeometry(QtCore.QRect(10, 0, 141, 51))
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(14)
font.setBold(False)
font.setItalic(True)
font.setWeight(9)
self.name_proekt.setFont(font)
self.name_proekt.setToolTipDuration(-1)
self.name_proekt.setStyleSheet("font: 75 italic 14pt \"Times New Roman\";")
self.name_proekt.setObjectName("name_proekt")
self.shag_shifr = QtWidgets.QLabel(Dialog)
self.shag_shifr.setGeometry(QtCore.QRect(200, 30, 131, 31))
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(12)
font.setBold(False)
font.setItalic(True)
font.setWeight(9)
self.shag_shifr.setFont(font)
self.shag_shifr.setStyleSheet("font: 75 italic 12pt \"Times New Roman\";")
self.shag_shifr.setObjectName("shag_shifr")
self.resul = QtWidgets.QLabel(Dialog)
self.resul.setGeometry(QtCore.QRect(20, 200, 91, 16))
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(12)
font.setBold(False)
font.setItalic(True)
font.setWeight(9)
self.resul.setFont(font)
self.resul.setStyleSheet("font: 75 italic 12pt \"Times New Roman\";")
self.resul.setObjectName("resul")
self.okn_shag = QtWidgets.QLineEdit(Dialog)
self.okn_shag.setGeometry(QtCore.QRect(200, 60, 121, 20))
self.okn_shag.setMaxLength(99)
self.okn_shag.setObjectName("okn_shag")
self.langvod = QtWidgets.QLineEdit(Dialog)
self.langvod.setGeometry(QtCore.QRect(200, 110, 121, 20))
self.langvod.setText("")
self.langvod.setMaxLength(2)
self.langvod.setObjectName("langvod")
self.viborlang = QtWidgets.QLabel(Dialog)
self.viborlang.setGeometry(QtCore.QRect(200, 90, 91, 16))
font = QtGui.QFont()
font.setFamily("Times New Roman")
font.setPointSize(11)
font.setBold(False)
font.setItalic(True)
font.setWeight(9)
self.viborlang.setFont(font)
self.viborlang.setStyleSheet("font: 75 italic 11pt \"Times New Roman\";")
self.viborlang.setObjectName("viborlang")
self.retranslateUi(Dialog)
QtCore.QMetaObject.connectSlotsByName(Dialog)
def retranslateUi(self, Dialog):
_translate = QtCore.QCoreApplication.translate
Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
self.bt_shifr.setText(_translate("Dialog", "Шифрование"))
self.bt_exit.setText(_translate("Dialog", "Выйти"))
# ??? vvvvvvv # ???
self.ok_vvoda.setHtml(_translate("Dialog", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:\'MS Shell Dlg 2\'; font-size:8.25pt; font-weight:400; font-style:normal;\">\n"
"<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><br /></p></body></html>"))
self.name_proekt.setText(_translate("Dialog", " Шифр Цезаря"))
self.shag_shifr.setText(_translate("Dialog", "Шаг шифравания:"))
self.resul.setText(_translate("Dialog", "Результат:"))
self.viborlang.setText(_translate("Dialog", "Язык RU/EN:"))
class Dialog(QtWidgets.QDialog, Ui_Dialog):
def __init__(self):
super().__init__()
self.setupUi(self)
self.bt_shifr.clicked.connect(self.osn)
def osn(self):
alfavit_eu = 'ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ'
alfavit_ru = 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ'
itog = '' # +++
# !!! vvvvvv
if self.langvod.text() == "ru":
# for i in self.ok_vvoda:
# !!! vvvvvvvvvvvvv
for i in self.ok_vvoda.toPlainText():
host = alfavit_ru.find(i)
if host == -1: # +++
itog += i # +++
continue # +++
# new_host = host + self.okn_shag
# !!! vvvvvv
new_host = host + int(self.okn_shag.text())
# if i in alfvit_ru:
itog += alfavit_ru[new_host]
# else:
# itog += i
else:
pass
''' # !!! Если для "ru" верно, то сделайте по аналогии
for i in self.ok_vvoda(i):
new_host = host + self.okn_shag
if i in alfavit_en:
itog+= alfavit_en[new_host]
else:
itog += i
'''
self.okn_result.setText(itog)
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
w = Dialog()
w.show()
sys.exit(app.exec_())
