Advertisement
TroshinCode

Dark.py

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