Advertisement
Guest User

DarkTcipher1.0.py

a guest
Jan 25th, 2020
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.19 KB | None | 0 0
  1. '''
  2. TCIPHER 1.0 (Dark). Автор: Трошин Антон. GitHub: TroshinCode
  3. Документация в README.md
  4.  
  5. '''
  6. from tkinter import *
  7. from tkinter import messagebox
  8. import random
  9. error_list = [
  10.     'У Вас не установлен модуль pyperclip. См. в README.md',
  11.     'Файл dataTcipher.py поврежден или не найден. См. в README.md',
  12.     ]
  13. try:
  14.     import pyperclip
  15.     copypasteerror = False
  16. except ModuleNotFoundError or ImportError:
  17.     messagebox.showerror('Ошибка №0',error_list[0])
  18.     copypasteerror = True
  19.            
  20. try:
  21.     from dataTcipher import ciphers_rus, ciphers_eng, languages
  22.     dataerror = False
  23. except ModuleNotFoundError or ImportError:
  24.     messagebox.showerror('Ошибка №1',error_list[1])
  25.     dataerror = True  
  26.            
  27. if dataerror or copypasteerror:
  28.     sys.exit()
  29.  
  30. root = Tk()
  31. root.title('Tcipher 1.0')
  32. root.resizable(False,False)
  33. root["bg"] = "gray22"
  34.  
  35. var_logo = ['logo','logo1','logo2','logo3','logo4']
  36. answer = []
  37.    
  38. def answerwindow(encrypt_or_decrypt, whereanswer):
  39.     def copy():
  40.         pyperclip.copy(out.get(1.0, END))
  41.     child = Toplevel()  
  42.     child.resizable(False, False)
  43.     child["bg"] = "gray22"
  44.     out = Text(child, width=40, height=13, font='Calibri 12',
  45.                background='#555', foreground='white')
  46.     out.grid(row=0)
  47.     if encrypt_or_decrypt:
  48.         for symbol in whereanswer:
  49.             out.insert(1.0, symbol+' ')
  50.         child.title('Успешно зашифрованно')    
  51.     else:
  52.         for symbol in whereanswer:
  53.             out.insert(1.0, symbol+'')
  54.         child.title('Успешно расшифрованно')
  55.     copy_button = Button(child, text='Скопировать',
  56.                          background='#555', foreground='white',command=copy)
  57.     copy_button.grid(row=1)
  58.    
  59. def encrypt():
  60.     lang = lang_select.get()
  61.     answer.clear()
  62.     key = inp.get(1.0, END)
  63.     def encrypt_part(langcode, ciphers):
  64.         answer.insert(0, langcode)
  65.         for symbol in list(key):
  66.             if symbol in '1234567890':
  67.                 answer.insert(0, str(symbol))
  68.             if symbol == ' ':
  69.                 answer.insert(0, 'qP')
  70.             else:
  71.                 for part in ciphers:            
  72.                     if symbol == part[0]:
  73.                         answer.insert(0, part[1])
  74.                     if symbol == part[0].upper():
  75.                         answer.insert(0, part[1]+'b')
  76.     if lang == 'Русский': encrypt_part(languages[0], ciphers_rus)
  77.     if lang == 'English': encrypt_part(languages[1], ciphers_eng)
  78.     answerwindow(True, answer)
  79.    
  80. def decrypt():
  81.     answer.clear()
  82.     key = inp.get(1.0, END)
  83.     def decrypt_part(ciphers):
  84.         for symbol in key.split(' '):
  85.             if symbol in '1234567890':
  86.                 answer.insert(0, str(s))
  87.             if symbol == 'qP':
  88.                 answer.insert(0,' ')
  89.             else:    
  90.                 for part in ciphers:
  91.                     if symbol == part[1]:
  92.                         answer.insert(0, part[0])
  93.                     if symbol == part[1]+'b':
  94.                         answer.insert(0, part[0].upper())
  95.     if languages[0] in key.split(' '): decrypt_part(ciphers_rus)
  96.     if languages[1] in key.split(' '): decrypt_part(ciphers_eng)
  97.     answerwindow(False, answer)
  98.        
  99. photo = PhotoImage(file = "design/darklogo.gif")
  100. logo = Label(image = photo, background='gray22')
  101. logo.grid(row=0)
  102. label_before_langselect = Label(text='Выбор языка текста для шифрования:\n(при расшифровке не используется)',
  103.                                 font='Calibri 9', background='gray22', foreground='white')
  104. label_before_langselect.grid(row=1, sticky='w', padx=4)
  105. lang_select = StringVar(root)
  106. lang_select.set("Русский")
  107. lang_select_bar = OptionMenu(root, lang_select, "Русский", "English")
  108. lang_select_bar.configure(background='#555', foreground='white')
  109. lang_select_bar.grid(row=1, sticky='e', padx=5)
  110. inp = Text(width=37, height=10, background='#555', foreground='white', font='Calibri 12')
  111. inp.grid(row=2)
  112.  
  113. en_button = Button(text='Зашифровать', background='#555', foreground='white', command=encrypt)
  114. en_button.grid(row=3, sticky='w', padx=5, pady=1, ipadx=11)
  115. de_button = Button(text='Расшифровать', background='#555', foreground='white', command=decrypt)
  116. de_button.grid(row=4, sticky='w', padx=5, pady=1, ipadx=8)
  117. clr_button = Button(text='Очистить', background='#555', foreground='white',
  118.                     command=lambda: inp.delete(1.0,END))
  119. clr_button.grid(row=3, sticky='e', padx=5, pady=1, ipadx=8)
  120. pst_button = Button(text='Вставить', background='#555', foreground='white',
  121.                     command=lambda: inp.insert(1.0, pyperclip.paste()))
  122. pst_button.grid(row=4, sticky='e', padx=5, pady=1, ipadx=10)
  123. author = Label(text='TroshinCode. 2019-2020', font='Calibri 8', background='gray22', foreground='white')
  124. author.grid(row=5, sticky='e', padx=5, pady=1)
  125. status = Label(text='Dark', font='Calibri 9', background='gray22', foreground='white')
  126. status.grid(row=5, sticky='w', padx=5, pady=1)
  127.  
  128. root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement