Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import sys
- from PyQt6.QtWidgets import QApplication, QWidget, QVBoxLayout, QHBoxLayout, QLabel, QLineEdit, QPushButton, QComboBox
- class CaesarCipherApp(QWidget):
- def __init__(self):
- super().__init__()
- self.init_ui()
- def init_ui(self):
- # Tworzenie interfejsu użytkownika
- layout = QVBoxLayout()
- # Przyciski: Czyść, Szyfruj, Deszyfruj
- button_layout = QHBoxLayout()
- clear_button = QPushButton('Czyść', self)
- encrypt_button = QPushButton('Szyfruj', self)
- decrypt_button = QPushButton('Deszyfruj', self)
- button_layout.addWidget(clear_button)
- button_layout.addWidget(encrypt_button)
- button_layout.addWidget(decrypt_button)
- layout.addLayout(button_layout)
- # Pole tekstowe do wpisania znaków
- self.input_text = QLineEdit(self)
- layout.addWidget(self.input_text)
- # Pole do wyboru klucza
- self.key_label = QLabel('Klucz:', self)
- self.key_combobox = QComboBox(self)
- self.key_combobox.addItems([str(i) for i in range(1, 26)])
- layout.addWidget(self.key_label)
- layout.addWidget(self.key_combobox)
- # Pole wyświetlające zakodowany tekst
- self.output_label = QLabel('Zakodowany tekst:', self)
- self.output_text = QLineEdit(self)
- self.output_text.setReadOnly(True)
- layout.addWidget(self.output_label)
- layout.addWidget(self.output_text)
- self.setLayout(layout)
- # Przypisanie funkcji do przycisków
- clear_button.clicked.connect(self.clear_text)
- encrypt_button.clicked.connect(self.encrypt_text)
- decrypt_button.clicked.connect(self.decrypt_text)
- # Ustawienia okna
- self.setWindowTitle('Szyfr Cezara')
- self.show()
- def clear_text(self):
- # Funkcja do czyśczenia pól tekstowych
- self.input_text.clear()
- self.output_text.clear()
- def encrypt_text(self):
- # Funkcja do szyfrowania tekstu
- text = self.input_text.text()
- key = int(self.key_combobox.currentText())
- encrypted_text = self.caesar_cipher(text, key)
- self.output_text.setText(encrypted_text)
- def decrypt_text(self):
- # Funkcja do deszyfrowania tekstu
- text = self.input_text.text()
- key = int(self.key_combobox.currentText())
- decrypted_text = self.caesar_cipher(text, -key) # Używamy ujemnego klucza do deszyfrowania
- self.output_text.setText(decrypted_text)
- def caesar_cipher(self, text, key):
- # Funkcja implementująca szyfr Cezara
- result = ''
- for char in text:
- if char.isalpha():
- ascii_offset = ord('A') if char.isupper() else ord('a')
- result += chr((ord(char) - ascii_offset + key) % 26 + ascii_offset)
- else:
- result += char
- return result
- if __name__ == '__main__':
- app = QApplication(sys.argv)
- ex = CaesarCipherApp()
- sys.exit(app.exec())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement