Advertisement
Guest User

Python Tkinter problem

a guest
Apr 29th, 2021
198
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 10.57 KB | None | 0 0
  1. import tkinter
  2. from tkinter import filedialog
  3.  
  4. window =tkinter.Tk()
  5. window.title('Crypto')
  6. window.geometry('800x600')
  7. window.minsize(800, 600)
  8. window.maxsize(800, 600)
  9. window.configure(bg="LightSteelBlue4")
  10.  
  11. def clearRoot():
  12.     for widget in root.winfo_children():
  13.         widget.destroy()
  14.  
  15.  
  16. def mainFrame():
  17.     clearRoot()
  18.  
  19.     title =tkinter.Label(master=root,text="CRYPTO", fg="gray5", font=("Helvetica ", 25, "bold"), height=1, bg="LightSteelBlue4")
  20.     title.pack()
  21.     title =tkinter.Label(master=root,text="If you want to input file - choose File button, if you want to write - Text:",
  22.                          fg="gray15", font=("Helvetica ", 15), height=1, bg="LightSteelBlue4")
  23.     title.pack()
  24.    
  25.     bFrame=tkinter.Frame(master=root, relief="flat", padx=3, pady=3, width=100, bg="LightSteelBlue4")
  26.     b1 = tkinter.Button(master=bFrame, text = "File", font=("Helvetica", 15), fg="gray15",
  27.                         relief="flat", bg ="LightSteelBlue2", command = fileInputFrame)
  28.     b1.pack(side = tkinter.LEFT, padx = 5, pady = 5)
  29.  
  30.     b2 = tkinter.Button(master=bFrame, text = 'Text', font=("Helvetica", 15), fg="gray15",
  31.                         relief="flat", bg ="LightSteelBlue2", command = textInputFrame)
  32.     b2.pack(side = tkinter.RIGHT, padx = 5, pady = 5)
  33.     bFrame.pack()
  34.  
  35. def textInputFrame():
  36.     clearRoot()
  37.    
  38.     title =tkinter.Label(master=root,text="CRYPTO: Text input", fg="gray5", font=("Helvetica ", 25, "bold"), height=1, bg="LightSteelBlue4")
  39.     title.pack()
  40.     title =tkinter.Label(master=root,text="Write text, key value and number of charecters",
  41.                          fg="gray15", font=("Helvetica ", 15), height=1, bg="LightSteelBlue4")
  42.     title.pack()
  43.     title =tkinter.Label(master=root,text="in group if you encrypt or only text and key value if decrypt",
  44.                          fg="gray15", font=("Helvetica ", 15), height=1, bg="LightSteelBlue4")
  45.     title.pack()
  46.  
  47.     title =tkinter.Label(master=root,text="Type your text here:",
  48.                          fg="gray5", font=("Helvetica ", 15), height=1, bg="LightSteelBlue4")
  49.     title.pack()
  50.     textInput = tkinter.Entry(master=root, text="Type your text here:", fg="gray13",
  51.                                   width=100, font=("Helvetica", 12), relief="flat", bd=2, bg="LightSteelBlue1")
  52.     textInput.insert(0, "Example text...")
  53.     textInput.pack()
  54.  
  55.     topFrame = tkinter.Frame(master=root, relief="flat", padx=3, pady=3, width=100, bg="LightSteelBlue4")
  56.     title =tkinter.Label(master=topFrame,text="Write your key value:",
  57.                          fg="gray5", font=("Helvetica ", 15), height=1, bg="LightSteelBlue4")
  58.     title.pack(side = tkinter.LEFT, padx = 5, pady = 5)
  59.     keyInput = tkinter.Entry(master=topFrame, text="Type key:", fg="gray13",
  60.                                   width=100, font=("Helvetica", 12), relief="flat", bd=2, bg="LightSteelBlue1")
  61.     keyInput.pack(side = tkinter.RIGHT, padx = 5, pady = 5)
  62.     topFrame.pack()
  63.    
  64.     topFrame2 = tkinter.Frame(master=root, relief="flat", padx=3, pady=3, width=100, bg="LightSteelBlue4")
  65.     title2 =tkinter.Label(master=topFrame2,text="Write group number (only need if encrypt:",
  66.                          fg="gray5", font=("Helvetica ", 15), height=1, bg="LightSteelBlue4")
  67.     title2.pack(side = tkinter.LEFT, padx = 5, pady = 5)
  68.     groupInput = tkinter.Entry(master=topFrame2, text="Type number:", fg="gray13",
  69.                                   width=100, font=("Helvetica", 12), relief="flat", bd=2, bg="LightSteelBlue1")
  70.     groupInput.pack(side = tkinter.RIGHT, padx = 5, pady = 5)
  71.     topFrame2.pack()
  72.    
  73.    
  74.     bFrame=tkinter.Frame(master=root, relief="flat", padx=3, pady=3, width=100, bg="LightSteelBlue4")
  75.     b1 = tkinter.Button(master=bFrame, text = "Encrypt", font=("Helvetica", 15), fg="gray15",
  76.                         relief="flat", bg ="LightSteelBlue2",
  77.                         command =  lambda:encryptString(textInput.get(),int(keyInput.get()),int(groupInput.get())))
  78.     b1.pack(side = tkinter.LEFT, padx = 5, pady = 5)
  79.  
  80.     b2 = tkinter.Button(master=bFrame, text = 'Decrypt', font=("Helvetica", 15), fg="gray15",
  81.                         relief="flat", bg ="LightSteelBlue2",
  82.                         command =  lambda:decryptString(textInput.get(),int(keyInput.get())))
  83.     b2.pack(side = tkinter.LEFT, padx = 5, pady = 5)
  84.  
  85.     b3 = tkinter.Button(master=bFrame, text = 'Back', font=("Helvetica", 15), fg="gray15",
  86.                         relief="flat", bg ="LightSteelBlue2", command = mainFrame)
  87.     b3.pack(side = tkinter.RIGHT, padx = 5, pady = 5)
  88.     bFrame.pack()
  89.  
  90. def fileInputFrame():
  91.     clearRoot()
  92.    
  93.     title =tkinter.Label(master=root,text="CRYPTO: File input", fg="gray5", font=("Helvetica ", 25, "bold"), height=1, bg="LightSteelBlue4")
  94.     title.pack()
  95.     title =tkinter.Label(master=root,text="Write text, key value and number of charecters",
  96.                          fg="gray20", font=("Helvetica ", 15), height=1, bg="LightSteelBlue4")
  97.     title.pack()
  98.     title =tkinter.Label(master=root,text="in group if you encrypt or only text and key value if decrypt",
  99.                          fg="gray20", font=("Helvetica ", 15), height=1, bg="LightSteelBlue4")
  100.     title.pack()
  101.  
  102.     file = filedialog.askopenfile(parent=root,mode='r',title='Choose a file to encrypt or decrypt...')
  103.     if file:
  104.         data = ""
  105.         for line in file:
  106.             strippedLine = line.rstrip()
  107.             data += strippedLine
  108.  
  109.         file.close()
  110.         title =tkinter.Label(master=root,text="Your text from file:",
  111.                          fg="gray5", font=("Helvetica ", 15), height=1, bg="LightSteelBlue4")
  112.         title.pack()
  113.         textInput = tkinter.Entry(master=root, text="File text:", fg="gray13",
  114.                                   width=100, font=("Helvetica", 12), relief="flat", bd=2, bg="LightSteelBlue1")
  115.         textInput.insert(0, data)
  116.         textInput.pack()
  117.  
  118.     topFrame = tkinter.Frame(master=root, relief="flat", padx=3, pady=3, width=100, bg="LightSteelBlue4")
  119.     title =tkinter.Label(master=topFrame,text="Write your key value:",
  120.                          fg="gray5", font=("Helvetica ", 15), height=1, bg="LightSteelBlue4")
  121.     title.pack(side = tkinter.LEFT, padx = 5, pady = 5)
  122.     keyInput = tkinter.Entry(master=topFrame, text="Type key:", fg="gray13",
  123.                                   width=100, font=("Helvetica", 12), relief="flat", bd=2, bg="LightSteelBlue1")
  124.     keyInput.pack(side = tkinter.RIGHT, padx = 5, pady = 5)
  125.     topFrame.pack()
  126.    
  127.     topFrame2 = tkinter.Frame(master=root, relief="flat", padx=3, pady=3, width=100, bg="LightSteelBlue4")
  128.     title2 =tkinter.Label(master=topFrame2,text="Write group number (only need if encrypt:",
  129.                          fg="gray5", font=("Helvetica ", 15), height=1, bg="LightSteelBlue4")
  130.     title2.pack(side = tkinter.LEFT, padx = 5, pady = 5)
  131.     groupInput = tkinter.Entry(master=topFrame2, text="Type number:", fg="gray13",
  132.                                   width=100, font=("Helvetica", 12), relief="flat", bd=2, bg="LightSteelBlue1")
  133.     groupInput.pack(side = tkinter.RIGHT, padx = 5, pady = 5)
  134.     topFrame2.pack()
  135.    
  136.    
  137.     bFrame=tkinter.Frame(master=root, relief="flat", padx=3, pady=3, width=100, bg="LightSteelBlue4")
  138.     b1 = tkinter.Button(master=bFrame, text = "Encrypt", font=("Helvetica", 15), fg="gray15",
  139.                         relief="flat", bg ="LightSteelBlue2",
  140.                         command =  lambda:encryptString(textInput.get(),int(keyInput.get()),int(groupInput.get())))
  141.     b1.pack(side = tkinter.LEFT, padx = 5, pady = 5)
  142.  
  143.     b2 = tkinter.Button(master=bFrame, text = 'Decrypt', font=("Helvetica", 15), fg="gray15",
  144.                         relief="flat", bg ="LightSteelBlue2",
  145.                         command =  lambda:decryptString(textInput.get(),int(keyInput.get())))
  146.     b2.pack(side = tkinter.LEFT, padx = 5, pady = 5)
  147.  
  148.     b3 = tkinter.Button(master=bFrame, text = 'Back', font=("Helvetica", 15), fg="gray15",
  149.                         relief="flat", bg ="LightSteelBlue2", command =  mainFrame)
  150.     b3.pack(side = tkinter.RIGHT, padx = 5, pady = 5)
  151.     bFrame.pack()
  152.    
  153. def normalizeText(text):
  154.     result = text.translate({ord(i): None for i in ' .,:;’”!?(){}[]/\|@#$%^&*-_+=`1234567890'}).upper()
  155.     print(result)
  156.     return result
  157.  
  158. def caesarify(text,key):
  159.     result = ""
  160.     for i in range(len(text)):
  161.         char = text[i]
  162.         result += chr((ord(char) + key-65) % 26 + 65)
  163.     print(result)
  164.     return result
  165.  
  166. def groupify(text, num):
  167.     result = ""
  168.     array = [(text[i:i+num]) for i in range(0, len(text), num)]
  169.     dif = num - len(array[-1])
  170.     for i in range(len(array)):
  171.         if len(array[i])!=len(array[0]) and i != 0:
  172.             result += array[i] + ('x'*dif)
  173.         else:
  174.             result += array[i] + ' '
  175.     print(result)
  176.     return result
  177.  
  178. def ungroupify(text):
  179.     while(text[-1]=="x"):
  180.         text = text[:-1]
  181.     result = text.translate({ord(i): None for i in " "})
  182.     print(result)
  183.     return result
  184.  
  185. def encryptString(text,key,num):
  186.     text = normalizeText(text)
  187.     text = caesarify(text,key)
  188.     text = groupify(text, num)
  189.     data = str(text)
  190.    
  191.     resultFrame1 = tkinter.Frame(master=root, relief="flat", padx=3, pady=3, width=100, bg="LightSteelBlue4")
  192.     title1 =tkinter.Label(master=resultFrame1,text="Your encrypted text:",
  193.                          fg="gray5", font=("Helvetica ", 25), height=1, bg="LightSteelBlue4")
  194.     title1.pack()
  195.     resultOutput1 = tkinter.Entry(master=resultFrame1, text="encrypted text here:", fg="gray13",
  196.                                   width=100, font=("Helvetica", 12), relief="flat", bd=2, bg="LightSteelBlue1")
  197.     resultOutput1.insert(0, data)
  198.     resultOutput1.pack(padx = 5, pady = 5)
  199.     resultFrame1.pack()
  200.  
  201. def decryptString(text,key):
  202.     text = ungroupify(text)
  203.     text = caesarify(text,key)
  204.     data2 = str(text)
  205.    
  206.     resultFrame2 = tkinter.Frame(master=root, relief="flat", padx=3, pady=3, width=100, bg="LightSteelBlue4")
  207.     title2 =tkinter.Label(master=resultFrame2,text="Your decrypted text:",
  208.                          fg="gray5", font=("Helvetica ", 25), height=1, bg="LightSteelBlue4")
  209.     title2.pack()
  210.     resultOutput2 = tkinter.Entry(master=resultFrame2, text="encrypted text here:", fg="gray13",
  211.                                   width=100, font=("Helvetica", 12), relief="flat", bd=2, bg="LightSteelBlue1")
  212.     resultOutput2.insert(0, data2)
  213.     resultOutput2.pack(padx = 5, pady = 5)
  214.     resultFrame2.pack()
  215.  
  216.  
  217. root = tkinter.Frame(relief="flat", padx=0.5, pady=0.5, bg="LightSteelBlue4")
  218. root.pack()
  219.  
  220. mainFrame()
  221. window.mainloop()
  222.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement