This tutorial was a big hit. I'll cut to the chase, we introduced each concept slowly but here is the final code:
import tkinter as tk
from tkinter import ttk
import codecs
import binascii
def code_master_base64():
s = entry1.get()
try:
# Decoding input string from base64
a = codecs.decode(s.encode('utf-8'), 'base64').decode('utf-8')
except Exception as e:
a = "Invalid code: {}".format(str(e))
# Encoding input string to base64
b = codecs.encode(s.encode('utf-8'), 'base64').decode('utf-8')
# Update labels and entry
label2.config(text=a)
entry2.delete(0, tk.END)
entry2.insert(0, b)
def code_master_hex():
s = entry1.get()
try:
a = codecs.decode(s, 'hex')
except Exception as e:
a = "Invalid code: {}".format(str(e))
b = codecs.encode(s.encode('utf-8'), 'hex')
label2.config(text=a)
entry2.delete(0, tk.END)
entry2.insert(0, b)
def code_master_rot13():
s = entry1.get()
a = codecs.decode(s, 'rot_13')
label2.config(text=a)
entry2.delete(0, tk.END)
entry2.insert(0, a)
def center_window(window, width, height):
screen_width = window.winfo_screenwidth()
screen_height = window.winfo_screenheight()
x = (screen_width - width) // 2
y = (screen_height - height) // 3
window.geometry('{}x{}+{}+{}'.format(width, height, x, y))
# Create the main window
root = tk.Tk()
root.geometry("400x400")
center_window(root, 400, 400)
# Make a label.
label1 = tk.Label(root, text = "Code Master v1.2")
label1.pack(pady=10)
# Create a Text Entry field.
entry1 = tk.Entry(root)
entry1.pack(pady=10)
entry1.focus_set()
# Make a label.
label2 = tk.Label(root, text = "TRANSLATE CODE")
label2.pack(pady=10)
# Create a Text Entry field.
entry2 = tk.Entry(root)
entry2.pack(pady=10)
# Make an action button
button1 = tk.Button(root, text = "ROT13", command=code_master_rot13)
button1.pack(pady=10)
button2 = tk.Button(root, text = "Hex", command=code_master_hex)
button2.pack(pady=10)
button3 = tk.Button(root, text = "Base64", command=code_master_base64)
button3.pack(pady=10)
# Start the window.
root.mainloop()