Advertisement
programusy

Untitled

Oct 5th, 2023
22
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.04 KB | None | 0 0
  1. import sys
  2. from PyQt6.QtWidgets import QApplication, QWidget, QVBoxLayout, QHBoxLayout, QLabel, QLineEdit, QPushButton, QComboBox
  3.  
  4. class CaesarCipherApp(QWidget):
  5. def __init__(self):
  6. super().__init__()
  7.  
  8. self.init_ui()
  9.  
  10. def init_ui(self):
  11. # Tworzenie interfejsu użytkownika
  12. layout = QVBoxLayout()
  13.  
  14. # Przyciski: Czyść, Szyfruj, Deszyfruj
  15. button_layout = QHBoxLayout()
  16. clear_button = QPushButton('Czyść', self)
  17. encrypt_button = QPushButton('Szyfruj', self)
  18. decrypt_button = QPushButton('Deszyfruj', self)
  19.  
  20. button_layout.addWidget(clear_button)
  21. button_layout.addWidget(encrypt_button)
  22. button_layout.addWidget(decrypt_button)
  23.  
  24. layout.addLayout(button_layout)
  25.  
  26. # Pole tekstowe do wpisania znaków
  27. self.input_text = QLineEdit(self)
  28. layout.addWidget(self.input_text)
  29.  
  30. # Pole do wyboru klucza
  31. self.key_label = QLabel('Klucz:', self)
  32. self.key_combobox = QComboBox(self)
  33. self.key_combobox.addItems([str(i) for i in range(1, 26)])
  34.  
  35. layout.addWidget(self.key_label)
  36. layout.addWidget(self.key_combobox)
  37.  
  38. # Pole wyświetlające zakodowany tekst
  39. self.output_label = QLabel('Zakodowany tekst:', self)
  40. self.output_text = QLineEdit(self)
  41. self.output_text.setReadOnly(True)
  42.  
  43. layout.addWidget(self.output_label)
  44. layout.addWidget(self.output_text)
  45.  
  46. self.setLayout(layout)
  47.  
  48. # Przypisanie funkcji do przycisków
  49. clear_button.clicked.connect(self.clear_text)
  50. encrypt_button.clicked.connect(self.encrypt_text)
  51. decrypt_button.clicked.connect(self.decrypt_text)
  52.  
  53. # Ustawienia okna
  54. self.setWindowTitle('Szyfr Cezara')
  55. self.show()
  56.  
  57. def clear_text(self):
  58. # Funkcja do czyśczenia pól tekstowych
  59. self.input_text.clear()
  60. self.output_text.clear()
  61.  
  62. def encrypt_text(self):
  63. # Funkcja do szyfrowania tekstu
  64. text = self.input_text.text()
  65. key = int(self.key_combobox.currentText())
  66. encrypted_text = self.caesar_cipher(text, key)
  67. self.output_text.setText(encrypted_text)
  68.  
  69. def decrypt_text(self):
  70. # Funkcja do deszyfrowania tekstu
  71. text = self.input_text.text()
  72. key = int(self.key_combobox.currentText())
  73. decrypted_text = self.caesar_cipher(text, -key) # Używamy ujemnego klucza do deszyfrowania
  74. self.output_text.setText(decrypted_text)
  75.  
  76. def caesar_cipher(self, text, key):
  77. # Funkcja implementująca szyfr Cezara
  78. result = ''
  79. for char in text:
  80. if char.isalpha():
  81. ascii_offset = ord('A') if char.isupper() else ord('a')
  82. result += chr((ord(char) - ascii_offset + key) % 26 + ascii_offset)
  83. else:
  84. result += char
  85. return result
  86.  
  87.  
  88. if __name__ == '__main__':
  89. app = QApplication(sys.argv)
  90. ex = CaesarCipherApp()
  91. sys.exit(app.exec())
  92.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement