I have designed a GUI in PyQt 5 for a cipher and I am now trying to integrate the code. I am having trouble with the encrypting and decrypting of the message being displayed.
I want it to take the contents of one textbox and run it through encrypting/decrypting and then display it in another textbox. When I push either button it just crashes with a "PythonW.exe is not responding" error.
from PyQt5 import QtCore, QtGui, QtWidgets
import sys, random
import cipher ## Designed GUI
LETTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
class CipherDesign(QtWidgets.QMainWindow, cipher.Ui_MainWindow):
def __init__(self, parent=None):
super(CipherDesign, self).__init__(parent)
self.setupUi(self)
self.BGenerate.clicked.connect(self.generatekey) # Generate Button
self.BSubmit.clicked.connect(self.submitkey) # Submit Button
self.BEncrypt.clicked.connect(self.encrypt) # Encrypt Button
self.BDecrypt.clicked.connect(self.decrypt) # Decrypt Button
def generatekey(self):
key = list(LETTERS)
random.shuffle(key)
self.keytext.setText(''.join(key))
print (key) ##### DELETE ####
def submitkey(self):
submittedkey = self.keytext_2.text()
mykey = submittedkey
print (mykey) #### DELETE ####
def encrypt(self, mykey, translated):
return translatedMessage(key, translated, 'encrypt')
def decrypt(self, mykey, translated):
return translatedMessage(key, translated, 'decrypt')
def translatedMessage(self, key, translated, mode):
message = self.textencrypt.setPlainText()
translated = ''
self.textdecrypt.toPlainText(''.join(translated))
charsA = LETTERS
charsB = mykey
if mode == 'decrypt':
charsA, charsB = charsB, charsA
for symbol in message:
if symbol.upper() in charsA:
symIndex = charsA.find(symbol.upper())
if symbol.isupper():
translated += charsB[symIndex].upper()
else:
translated += charsB[symIndex].lower()
else:
translated += symbol
return translated
def main():
app = QtWidgets.QApplication(sys.argv)
form = CipherDesign()
form.show()
app.exec_()
if __name__ == "__main__":
main()
Not really sure what is exactly wrong.
python.cy code
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'cipher.ui'
#
# Created by: PyQt5 UI code generator 5.5
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(473, 288)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
# Encrypt Textbox
self.textencrypt = QtWidgets.QPlainTextEdit(self.centralwidget)
self.textencrypt.setGeometry(QtCore.QRect(10, 100, 221, 171))
self.textencrypt.setObjectName("textencrypt")
# Decrypt Textbox
self.textdecrypt = QtWidgets.QPlainTextEdit(self.centralwidget)
self.textdecrypt.setGeometry(QtCore.QRect(240, 100, 221, 171))
self.textdecrypt.setObjectName("textdecrypt")
# Encrypt Button
self.BEncrypt = QtWidgets.QPushButton(self.centralwidget)
self.BEncrypt.setGeometry(QtCore.QRect(10, 70, 75, 23))
self.BEncrypt.setObjectName("BEncrypt")
# Decrypt Button
self.BDecrypt = QtWidgets.QPushButton(self.centralwidget)
self.BDecrypt.setGeometry(QtCore.QRect(90, 70, 75, 23))
self.BDecrypt.setObjectName("BDecrypt")
# Generate Key Textbox
self.keytext = QtWidgets.QLineEdit(self.centralwidget)
self.keytext.setGeometry(QtCore.QRect(10, 10, 271, 20))
self.keytext.setInputMask("")
self.keytext.setText("")
self.keytext.setMaxLength(32767)
self.keytext.setObjectName("keytext")
# Generate Key Button
self.BGenerate = QtWidgets.QPushButton(self.centralwidget)
self.BGenerate.setGeometry(QtCore.QRect(290, 10, 75, 23))
self.BGenerate.setObjectName("BGenerate")
# Submit Key Textbox
self.keytext_2 = QtWidgets.QLineEdit(self.centralwidget)
self.keytext_2.setGeometry(QtCore.QRect(10, 40, 271, 20))
self.keytext_2.setMaxLength(26)
self.keytext_2.setObjectName("keytext_2")
# Submit Key Button
self.BSubmit = QtWidgets.QPushButton(self.centralwidget)
self.BSubmit.setGeometry(QtCore.QRect(290, 40, 75, 23))
self.BSubmit.setObjectName("BSubmit")
MainWindow.setCentralWidget(self.centralwidget)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "Cipher"))
self.BEncrypt.setText(_translate("MainWindow", "Encrypt"))
self.BDecrypt.setText(_translate("MainWindow", "Decrypt"))
self.BGenerate.setText(_translate("MainWindow", "Generate Key"))
self.BSubmit.setText(_translate("MainWindow", "Submit Key"))