В QLabel выводится только последний символ, а нужно полностью всё предложение
Цикл for в QLabel выводит только последний символ, а нужно полностью всё предложение. Зарание спасибо за помощь.
import sys
from PyQt5 import QtWidgets, QtGui
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
class Window(QMainWindow):
def __init__(self):
super(Window, self).__init__()
self.setWindowTitle("Encryption machine!")
self.setGeometry(100, 100, 450, 330)
self.label_1.setFixedWidth(261)
self.label_1.setFixedHeight(31)
#Надпись "Текст у шифр"
self.label_1 = QtWidgets.QLabel(self)
self.label_1.setText("Введіть речення, слово, букву")
self.label_1.move(120, 20)
self.label_1.setFont(QFont("Arial", 12))
#ввод тексту
self.line_edit = QtWidgets.QPlainTextEdit(self)
self.line_edit.move(20, 70)
self.line_edit.setFont(QFont("Arial", 12))
#створення кнопки "Текст у шифр"
self.btn_1 = QtWidgets.QPushButton(self)
self.btn_1.setText("Текст у шифр")
self.btn_1.move(20, 160)
self.btn_1.setFont(QFont("Arial", 12))
self.btn_1.clicked.connect(self.d_text_btn_1)
#створення перекладу (без настройок) для btn_1
self.text_btn_1 = QtWidgets.QLabel(self)
self.text_btn_1.move(20, 200)
def d_text_btn_1(self):
#заносим значення line_edit у переменую path
path = self.line_edit.toPlainText()
slovnuk_shufry = {
"а":"е",
"б":"н",
"в":"б",
"г":"р",
"д":"и",
"е":"у",
"є":"в",
"ж":"ї",
"з":"ч",
"и":"г",
"ї":"о",
"й":"є",
"к":"л",
"л":"д",
"м":"щ",
"н":"й",
"о":"ю",
"п":"а",
"р":"с",
"с":"м",
"т":"я",
"у":"п",
"ф":"ж",
"х":"ц",
"ц":"х",
"ч":"к",
"ш":"т",
"щ":"ш",
"ь":"з",
"ю":"ь",
"я":"ф"}
for char in path:
prin = slovnuk_shufry[char]
#настройка відповіді
self.text_btn_1.setText(prin)
if __name__ == "__main__":
wind_1 = QApplication(sys.argv)
wind_2 = Window()
wind_2.show()
sys.exit(wind_1.exec_())
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
Я увидел вашу задачу так:
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.Qt import *
class Window(QMainWindow):
def __init__(self):
super(Window, self).__init__()
self.centralwidget = QtWidgets.QWidget() # !!! +++
self.setCentralWidget(self.centralwidget) # !!! +++
self.setWindowTitle("Шифровальная машина!")
self.resize(700, 300)
self.slovnuk_shufry = {
"а": "е",
"б": "н",
"в": "б",
"г": "р",
"д": "и",
"е": "у",
"є": "в",
"ж": "ї",
"з": "ч",
"и": "г",
"ї": "о",
"й": "є",
"к": "л",
"л": "д",
"м": "щ",
"н": "й",
"о": "ю",
"п": "а",
"р": "с",
"с": "м",
"т": "я",
"у": "п",
"ф": "ж",
"х": "ц",
"ц": "х",
"ч": "к",
"ш": "т",
"щ": "ш",
"ь": "з",
"ю": "ь",
"я": "ф",
}
self.label = QtWidgets.QLabel(self)
self.label.setText("Введите предложение, слово, букву: ")
self.plainTextEdit = QtWidgets.QPlainTextEdit(self)
self.btn = QtWidgets.QPushButton(self)
self.btn.setText("Шифровать текст")
self.btn.clicked.connect(self.encrypt_text)
self.encrypted_text = QtWidgets.QTextBrowser() # ! QTextBrowser
self.layout = QtWidgets.QGridLayout(self.centralwidget) # !!! +++
self.layout.addWidget(self.label, 1, 1)
self.layout.addWidget(self.plainTextEdit, 1, 2, 1, 2)
self.layout.addWidget(self.btn, 2, 2)
self.layout.addWidget(QLabel('Зашифрованный текст: '), 3, 1)
self.layout.addWidget(self.encrypted_text, 3, 2, 1, 2)
def encrypt_text(self):
text = self.plainTextEdit.toPlainText()
self.encrypted_text.clear() # +++
for char in text:
prin = self.slovnuk_shufry.get(char) # +++ .get(char)
if not prin: # +++
prin = char # +++
self.encrypted_text.insertPlainText(prin) # !!! +++
if __name__ == "__main__":
app = QApplication(sys.argv)
app.setFont(QtGui.QFont("Arial", 12, QtGui.QFont.Bold)) # +++
w = Window()
w.show()
sys.exit(app.exec_())
Спросите, если что-то не понятно.
