Created this Py+MySQL program for my High School Project. Need Help & Suggestions as a beginner. /u/DiligentBank7831 Python Education

idk much about programming, learning. I just did this project and needed suggestions for improvements as well as recommendations on what topics should i focus on & learn. I’d be grateful for your help.

You can also run this code to test. Just install the 4 modules in first 4 lines and enter your MySQL passwd. Also create a file named EncryptionKey.dat. Thanks.

import tkinter as tk import tkinter.messagebox import secrets,pickle import mysql.connector as ms connect=ms.connect(host='localhost',passwd='YourPasswword',user='root') cursor=connect.cursor() cursor.execute("CREATE DATABASE IF NOT EXISTS EN_DEC_CHAT_RECORDS;") cursor.execute("USE EN_DEC_CHAT_RECORDS;") cursor.execute("""CREATE TABLE IF NOT EXISTS chat_record( ChatDate_Time DATETIME PRIMARY KEY, ChatMsg VARCHAR(10000) );""") connect.commit() root=tk.Tk() #_____________________________________________________ def ASCII(): string1="" for i in range(0,128): string1+=chr(i) return list(string1) lst=ASCII() #_____________________________________________________ try: #key generator def keygen(texts): k="" for i in texts: x=secrets.randbelow(127) k+=chr(x) return k #_____________________________________________________ # Message Encryptor def encrypt(texts,key): k1=list(key) msg="" for i,char in enumerate(texts): sum1=(lst.index(char)+lst.index(k1[i]))%128 msg+=lst[sum1] return msg except Exception as e: tkinter.messagebox.showerror("Error_Occured",f"Unexpected error {e} occured") #_____________________________________________________ #Message Decryptor def decrypt(): cursor.execute("SELECT ChatMsg FROM chat_record WHERE ChatDate_Time=(SELECT max(ChatDate_Time) FROM chat_record);") msg=cursor.fetchone()[0] connect.commit() if msg is None: tkinter.messagebox.showerror("Message Not Found Error","Kindly Enter Your Msg to Send") with open("EncryptionKey.dat","rb") as keyf: sharedkey=pickle.load(keyf) label = tk.Label(root, text=f"DECIPHERING MESSAGE: {msg}nVIA PROVIDED KEY: {sharedkey}") label.pack(padx=20,pady=20) recieved="" for i,j in zip(msg,sharedkey): diff2=(lst.index(i)-lst.index(j))%128 recieved+=lst[diff2] label = tk.Label(root, text=f"THE DECRYPTED MESSAGE IS: {recieved}") label.pack(padx=20,pady=20) #_____________________________________________________ #Tkinter GUI for application def GUI(): root.geometry("1200x600") root.title("ENCRYPTOR-INTERFACE") label=tk.Label(root, text=" EndecChat ",font=('San Francisco',36),bg="DarkSlateBlue") label.pack(padx=20,pady=20) contents=tk.Entry(root, font=("San Francisco", 18,),bg="DarkSlateBlue") contents.pack(padx=20,pady=20) buttonframe=tk.Frame(root) buttonframe.columnconfigure(0, weight=1) buttonframe.columnconfigure(1, weight=1) #_____________________________________________________ #file management and msg sharing via MySQL def ProcessedText(): texts=contents.get() key=keygen(texts) global encryptedmsg encryptedmsg=encrypt(texts,key) try: cursor.execute(f"INSERT INTO chat_record(ChatDate_time,ChatMsg) VALUE(NOW(),'{encryptedmsg}')") with open("EncryptionKey.dat","wb") as keyfile: pickle.dump(key,keyfile) tkinter.messagebox.showinfo("Success", "Message Encrypted Successfully") except FileNotFoundError as FnF: tkinter.messagebox.showerror("Error_Occured", f"{FnF}") #_____________________________________________________ btn1=tk.Button(root, text="Save",font=("San Francisco", 11),command=lambda: [ProcessedText(), contents.delete(0, tk.END)]) btn1.place(x=950,y=120,height=50,width=100) btn3=tk.Button(buttonframe, text="Decrypt",font=("San Francisco", 11),command=decrypt) btn3.grid(row=0,column=0,sticky=tk.E+tk.W) btn4=tk.Button(buttonframe, text="Exit",font=("San Francisco", 11),command=root.quit) btn4.grid(row=0,column=1,sticky=tk.E+tk.W) #_____________________________________________________ buttonframe.pack(fill='x') root.configure(bg="Gray9") root.mainloop() GUI() import tkinter as tk import tkinter.messagebox import secrets,pickle import mysql.connector as ms connect=ms.connect(host='localhost',passwd='Avengers@123',user='root') cursor=connect.cursor() cursor.execute("CREATE DATABASE IF NOT EXISTS EN_DEC_CHAT_RECORDS;") cursor.execute("USE EN_DEC_CHAT_RECORDS;") cursor.execute("""CREATE TABLE IF NOT EXISTS chat_record( ChatDate_Time DATETIME PRIMARY KEY, ChatMsg VARCHAR(10000) );""") connect.commit() root=tk.Tk() #_____________________________________________________ def ASCII(): string1="" for i in range(0,128): string1+=chr(i) return list(string1) lst=ASCII() #_____________________________________________________ try: #key generator def keygen(texts): k="" for i in texts: x=secrets.randbelow(127) k+=chr(x) return k #_____________________________________________________ # Message Encryptor def encrypt(texts,key): k1=list(key) msg="" for i,char in enumerate(texts): sum1=(lst.index(char)+lst.index(k1[i]))%128 msg+=lst[sum1] return msg except Exception as e: tkinter.messagebox.showerror("Error_Occured",f"Unexpected error {e} occured") #_____________________________________________________ #Message Decryptor def decrypt(): cursor.execute("SELECT ChatMsg FROM chat_record WHERE ChatDate_Time=(SELECT max(ChatDate_Time) FROM chat_record);") msg=cursor.fetchone()[0] connect.commit() if msg is None: tkinter.messagebox.showerror("Message Not Found Error","Kindly Enter Your Msg to Send") with open("EncryptionKey.dat","rb") as keyf: sharedkey=pickle.load(keyf) label = tk.Label(root, text=f"DECIPHERING MESSAGE: {msg}nVIA PROVIDED KEY: {sharedkey}") label.pack(padx=20,pady=20) recieved="" for i,j in zip(msg,sharedkey): diff2=(lst.index(i)-lst.index(j))%128 recieved+=lst[diff2] label = tk.Label(root, text=f"THE DECRYPTED MESSAGE IS: {recieved}") label.pack(padx=20,pady=20) #_____________________________________________________ #Tkinter GUI for application def GUI(): root.geometry("1200x600") root.title("ENCRYPTOR-INTERFACE") label=tk.Label(root, text=" EndecChat ",font=('San Francisco',36),bg="DarkSlateBlue") label.pack(padx=20,pady=20) contents=tk.Entry(root, font=("San Francisco", 18,),bg="DarkSlateBlue") contents.pack(padx=20,pady=20) buttonframe=tk.Frame(root) buttonframe.columnconfigure(0, weight=1) buttonframe.columnconfigure(1, weight=1) #_____________________________________________________ #file management and msg sharing via MySQL def ProcessedText(): texts=contents.get() key=keygen(texts) global encryptedmsg encryptedmsg=encrypt(texts,key) try: cursor.execute(f"INSERT INTO chat_record(ChatDate_time,ChatMsg) VALUE(NOW(),'{encryptedmsg}')") with open("EncryptionKey.dat","wb") as keyfile: pickle.dump(key,keyfile) tkinter.messagebox.showinfo("Success", "Message Encrypted Successfully") except FileNotFoundError as FnF: tkinter.messagebox.showerror("Error_Occured", f"{FnF}") #_____________________________________________________ btn1=tk.Button(root, text="Save",font=("San Francisco", 11),command=lambda: [ProcessedText(), contents.delete(0, tk.END)]) btn1.place(x=950,y=120,height=50,width=100) btn3=tk.Button(buttonframe, text="Decrypt",font=("San Francisco", 11),command=decrypt) btn3.grid(row=0,column=0,sticky=tk.E+tk.W) btn4=tk.Button(buttonframe, text="Exit",font=("San Francisco", 11),command=root.quit) btn4.grid(row=0,column=1,sticky=tk.E+tk.W) #_____________________________________________________ buttonframe.pack(fill='x') root.configure(bg="Gray9") root.mainloop() GUI() 

submitted by /u/DiligentBank7831
[link] [comments]

​r/learnpython idk much about programming, learning. I just did this project and needed suggestions for improvements as well as recommendations on what topics should i focus on & learn. I’d be grateful for your help. You can also run this code to test. Just install the 4 modules in first 4 lines and enter your MySQL passwd. Also create a file named EncryptionKey.dat. Thanks. import tkinter as tk import tkinter.messagebox import secrets,pickle import mysql.connector as ms connect=ms.connect(host=’localhost’,passwd=’YourPasswword’,user=’root’) cursor=connect.cursor() cursor.execute(“CREATE DATABASE IF NOT EXISTS EN_DEC_CHAT_RECORDS;”) cursor.execute(“USE EN_DEC_CHAT_RECORDS;”) cursor.execute(“””CREATE TABLE IF NOT EXISTS chat_record( ChatDate_Time DATETIME PRIMARY KEY, ChatMsg VARCHAR(10000) );”””) connect.commit() root=tk.Tk() #_____________________________________________________ def ASCII(): string1=”” for i in range(0,128): string1+=chr(i) return list(string1) lst=ASCII() #_____________________________________________________ try: #key generator def keygen(texts): k=”” for i in texts: x=secrets.randbelow(127) k+=chr(x) return k #_____________________________________________________ # Message Encryptor def encrypt(texts,key): k1=list(key) msg=”” for i,char in enumerate(texts): sum1=(lst.index(char)+lst.index(k1[i]))%128 msg+=lst[sum1] return msg except Exception as e: tkinter.messagebox.showerror(“Error_Occured”,f”Unexpected error {e} occured”) #_____________________________________________________ #Message Decryptor def decrypt(): cursor.execute(“SELECT ChatMsg FROM chat_record WHERE ChatDate_Time=(SELECT max(ChatDate_Time) FROM chat_record);”) msg=cursor.fetchone()[0] connect.commit() if msg is None: tkinter.messagebox.showerror(“Message Not Found Error”,”Kindly Enter Your Msg to Send”) with open(“EncryptionKey.dat”,”rb”) as keyf: sharedkey=pickle.load(keyf) label = tk.Label(root, text=f”DECIPHERING MESSAGE: {msg}nVIA PROVIDED KEY: {sharedkey}”) label.pack(padx=20,pady=20) recieved=”” for i,j in zip(msg,sharedkey): diff2=(lst.index(i)-lst.index(j))%128 recieved+=lst[diff2] label = tk.Label(root, text=f”THE DECRYPTED MESSAGE IS: {recieved}”) label.pack(padx=20,pady=20) #_____________________________________________________ #Tkinter GUI for application def GUI(): root.geometry(“1200×600”) root.title(“ENCRYPTOR-INTERFACE”) label=tk.Label(root, text=” EndecChat “,font=(‘San Francisco’,36),bg=”DarkSlateBlue”) label.pack(padx=20,pady=20) contents=tk.Entry(root, font=(“San Francisco”, 18,),bg=”DarkSlateBlue”) contents.pack(padx=20,pady=20) buttonframe=tk.Frame(root) buttonframe.columnconfigure(0, weight=1) buttonframe.columnconfigure(1, weight=1) #_____________________________________________________ #file management and msg sharing via MySQL def ProcessedText(): texts=contents.get() key=keygen(texts) global encryptedmsg encryptedmsg=encrypt(texts,key) try: cursor.execute(f”INSERT INTO chat_record(ChatDate_time,ChatMsg) VALUE(NOW(),'{encryptedmsg}’)”) with open(“EncryptionKey.dat”,”wb”) as keyfile: pickle.dump(key,keyfile) tkinter.messagebox.showinfo(“Success”, “Message Encrypted Successfully”) except FileNotFoundError as FnF: tkinter.messagebox.showerror(“Error_Occured”, f”{FnF}”) #_____________________________________________________ btn1=tk.Button(root, text=”Save”,font=(“San Francisco”, 11),command=lambda: [ProcessedText(), contents.delete(0, tk.END)]) btn1.place(x=950,y=120,height=50,width=100) btn3=tk.Button(buttonframe, text=”Decrypt”,font=(“San Francisco”, 11),command=decrypt) btn3.grid(row=0,column=0,sticky=tk.E+tk.W) btn4=tk.Button(buttonframe, text=”Exit”,font=(“San Francisco”, 11),command=root.quit) btn4.grid(row=0,column=1,sticky=tk.E+tk.W) #_____________________________________________________ buttonframe.pack(fill=’x’) root.configure(bg=”Gray9″) root.mainloop() GUI() import tkinter as tk import tkinter.messagebox import secrets,pickle import mysql.connector as ms connect=ms.connect(host=’localhost’,passwd=’Avengers@123′,user=’root’) cursor=connect.cursor() cursor.execute(“CREATE DATABASE IF NOT EXISTS EN_DEC_CHAT_RECORDS;”) cursor.execute(“USE EN_DEC_CHAT_RECORDS;”) cursor.execute(“””CREATE TABLE IF NOT EXISTS chat_record( ChatDate_Time DATETIME PRIMARY KEY, ChatMsg VARCHAR(10000) );”””) connect.commit() root=tk.Tk() #_____________________________________________________ def ASCII(): string1=”” for i in range(0,128): string1+=chr(i) return list(string1) lst=ASCII() #_____________________________________________________ try: #key generator def keygen(texts): k=”” for i in texts: x=secrets.randbelow(127) k+=chr(x) return k #_____________________________________________________ # Message Encryptor def encrypt(texts,key): k1=list(key) msg=”” for i,char in enumerate(texts): sum1=(lst.index(char)+lst.index(k1[i]))%128 msg+=lst[sum1] return msg except Exception as e: tkinter.messagebox.showerror(“Error_Occured”,f”Unexpected error {e} occured”) #_____________________________________________________ #Message Decryptor def decrypt(): cursor.execute(“SELECT ChatMsg FROM chat_record WHERE ChatDate_Time=(SELECT max(ChatDate_Time) FROM chat_record);”) msg=cursor.fetchone()[0] connect.commit() if msg is None: tkinter.messagebox.showerror(“Message Not Found Error”,”Kindly Enter Your Msg to Send”) with open(“EncryptionKey.dat”,”rb”) as keyf: sharedkey=pickle.load(keyf) label = tk.Label(root, text=f”DECIPHERING MESSAGE: {msg}nVIA PROVIDED KEY: {sharedkey}”) label.pack(padx=20,pady=20) recieved=”” for i,j in zip(msg,sharedkey): diff2=(lst.index(i)-lst.index(j))%128 recieved+=lst[diff2] label = tk.Label(root, text=f”THE DECRYPTED MESSAGE IS: {recieved}”) label.pack(padx=20,pady=20) #_____________________________________________________ #Tkinter GUI for application def GUI(): root.geometry(“1200×600”) root.title(“ENCRYPTOR-INTERFACE”) label=tk.Label(root, text=” EndecChat “,font=(‘San Francisco’,36),bg=”DarkSlateBlue”) label.pack(padx=20,pady=20) contents=tk.Entry(root, font=(“San Francisco”, 18,),bg=”DarkSlateBlue”) contents.pack(padx=20,pady=20) buttonframe=tk.Frame(root) buttonframe.columnconfigure(0, weight=1) buttonframe.columnconfigure(1, weight=1) #_____________________________________________________ #file management and msg sharing via MySQL def ProcessedText(): texts=contents.get() key=keygen(texts) global encryptedmsg encryptedmsg=encrypt(texts,key) try: cursor.execute(f”INSERT INTO chat_record(ChatDate_time,ChatMsg) VALUE(NOW(),'{encryptedmsg}’)”) with open(“EncryptionKey.dat”,”wb”) as keyfile: pickle.dump(key,keyfile) tkinter.messagebox.showinfo(“Success”, “Message Encrypted Successfully”) except FileNotFoundError as FnF: tkinter.messagebox.showerror(“Error_Occured”, f”{FnF}”) #_____________________________________________________ btn1=tk.Button(root, text=”Save”,font=(“San Francisco”, 11),command=lambda: [ProcessedText(), contents.delete(0, tk.END)]) btn1.place(x=950,y=120,height=50,width=100) btn3=tk.Button(buttonframe, text=”Decrypt”,font=(“San Francisco”, 11),command=decrypt) btn3.grid(row=0,column=0,sticky=tk.E+tk.W) btn4=tk.Button(buttonframe, text=”Exit”,font=(“San Francisco”, 11),command=root.quit) btn4.grid(row=0,column=1,sticky=tk.E+tk.W) #_____________________________________________________ buttonframe.pack(fill=’x’) root.configure(bg=”Gray9″) root.mainloop() GUI() submitted by /u/DiligentBank7831 [link] [comments] 

idk much about programming, learning. I just did this project and needed suggestions for improvements as well as recommendations on what topics should i focus on & learn. I’d be grateful for your help.

You can also run this code to test. Just install the 4 modules in first 4 lines and enter your MySQL passwd. Also create a file named EncryptionKey.dat. Thanks.

import tkinter as tk import tkinter.messagebox import secrets,pickle import mysql.connector as ms connect=ms.connect(host='localhost',passwd='YourPasswword',user='root') cursor=connect.cursor() cursor.execute("CREATE DATABASE IF NOT EXISTS EN_DEC_CHAT_RECORDS;") cursor.execute("USE EN_DEC_CHAT_RECORDS;") cursor.execute("""CREATE TABLE IF NOT EXISTS chat_record( ChatDate_Time DATETIME PRIMARY KEY, ChatMsg VARCHAR(10000) );""") connect.commit() root=tk.Tk() #_____________________________________________________ def ASCII(): string1="" for i in range(0,128): string1+=chr(i) return list(string1) lst=ASCII() #_____________________________________________________ try: #key generator def keygen(texts): k="" for i in texts: x=secrets.randbelow(127) k+=chr(x) return k #_____________________________________________________ # Message Encryptor def encrypt(texts,key): k1=list(key) msg="" for i,char in enumerate(texts): sum1=(lst.index(char)+lst.index(k1[i]))%128 msg+=lst[sum1] return msg except Exception as e: tkinter.messagebox.showerror("Error_Occured",f"Unexpected error {e} occured") #_____________________________________________________ #Message Decryptor def decrypt(): cursor.execute("SELECT ChatMsg FROM chat_record WHERE ChatDate_Time=(SELECT max(ChatDate_Time) FROM chat_record);") msg=cursor.fetchone()[0] connect.commit() if msg is None: tkinter.messagebox.showerror("Message Not Found Error","Kindly Enter Your Msg to Send") with open("EncryptionKey.dat","rb") as keyf: sharedkey=pickle.load(keyf) label = tk.Label(root, text=f"DECIPHERING MESSAGE: {msg}nVIA PROVIDED KEY: {sharedkey}") label.pack(padx=20,pady=20) recieved="" for i,j in zip(msg,sharedkey): diff2=(lst.index(i)-lst.index(j))%128 recieved+=lst[diff2] label = tk.Label(root, text=f"THE DECRYPTED MESSAGE IS: {recieved}") label.pack(padx=20,pady=20) #_____________________________________________________ #Tkinter GUI for application def GUI(): root.geometry("1200x600") root.title("ENCRYPTOR-INTERFACE") label=tk.Label(root, text=" EndecChat ",font=('San Francisco',36),bg="DarkSlateBlue") label.pack(padx=20,pady=20) contents=tk.Entry(root, font=("San Francisco", 18,),bg="DarkSlateBlue") contents.pack(padx=20,pady=20) buttonframe=tk.Frame(root) buttonframe.columnconfigure(0, weight=1) buttonframe.columnconfigure(1, weight=1) #_____________________________________________________ #file management and msg sharing via MySQL def ProcessedText(): texts=contents.get() key=keygen(texts) global encryptedmsg encryptedmsg=encrypt(texts,key) try: cursor.execute(f"INSERT INTO chat_record(ChatDate_time,ChatMsg) VALUE(NOW(),'{encryptedmsg}')") with open("EncryptionKey.dat","wb") as keyfile: pickle.dump(key,keyfile) tkinter.messagebox.showinfo("Success", "Message Encrypted Successfully") except FileNotFoundError as FnF: tkinter.messagebox.showerror("Error_Occured", f"{FnF}") #_____________________________________________________ btn1=tk.Button(root, text="Save",font=("San Francisco", 11),command=lambda: [ProcessedText(), contents.delete(0, tk.END)]) btn1.place(x=950,y=120,height=50,width=100) btn3=tk.Button(buttonframe, text="Decrypt",font=("San Francisco", 11),command=decrypt) btn3.grid(row=0,column=0,sticky=tk.E+tk.W) btn4=tk.Button(buttonframe, text="Exit",font=("San Francisco", 11),command=root.quit) btn4.grid(row=0,column=1,sticky=tk.E+tk.W) #_____________________________________________________ buttonframe.pack(fill='x') root.configure(bg="Gray9") root.mainloop() GUI() import tkinter as tk import tkinter.messagebox import secrets,pickle import mysql.connector as ms connect=ms.connect(host='localhost',passwd='Avengers@123',user='root') cursor=connect.cursor() cursor.execute("CREATE DATABASE IF NOT EXISTS EN_DEC_CHAT_RECORDS;") cursor.execute("USE EN_DEC_CHAT_RECORDS;") cursor.execute("""CREATE TABLE IF NOT EXISTS chat_record( ChatDate_Time DATETIME PRIMARY KEY, ChatMsg VARCHAR(10000) );""") connect.commit() root=tk.Tk() #_____________________________________________________ def ASCII(): string1="" for i in range(0,128): string1+=chr(i) return list(string1) lst=ASCII() #_____________________________________________________ try: #key generator def keygen(texts): k="" for i in texts: x=secrets.randbelow(127) k+=chr(x) return k #_____________________________________________________ # Message Encryptor def encrypt(texts,key): k1=list(key) msg="" for i,char in enumerate(texts): sum1=(lst.index(char)+lst.index(k1[i]))%128 msg+=lst[sum1] return msg except Exception as e: tkinter.messagebox.showerror("Error_Occured",f"Unexpected error {e} occured") #_____________________________________________________ #Message Decryptor def decrypt(): cursor.execute("SELECT ChatMsg FROM chat_record WHERE ChatDate_Time=(SELECT max(ChatDate_Time) FROM chat_record);") msg=cursor.fetchone()[0] connect.commit() if msg is None: tkinter.messagebox.showerror("Message Not Found Error","Kindly Enter Your Msg to Send") with open("EncryptionKey.dat","rb") as keyf: sharedkey=pickle.load(keyf) label = tk.Label(root, text=f"DECIPHERING MESSAGE: {msg}nVIA PROVIDED KEY: {sharedkey}") label.pack(padx=20,pady=20) recieved="" for i,j in zip(msg,sharedkey): diff2=(lst.index(i)-lst.index(j))%128 recieved+=lst[diff2] label = tk.Label(root, text=f"THE DECRYPTED MESSAGE IS: {recieved}") label.pack(padx=20,pady=20) #_____________________________________________________ #Tkinter GUI for application def GUI(): root.geometry("1200x600") root.title("ENCRYPTOR-INTERFACE") label=tk.Label(root, text=" EndecChat ",font=('San Francisco',36),bg="DarkSlateBlue") label.pack(padx=20,pady=20) contents=tk.Entry(root, font=("San Francisco", 18,),bg="DarkSlateBlue") contents.pack(padx=20,pady=20) buttonframe=tk.Frame(root) buttonframe.columnconfigure(0, weight=1) buttonframe.columnconfigure(1, weight=1) #_____________________________________________________ #file management and msg sharing via MySQL def ProcessedText(): texts=contents.get() key=keygen(texts) global encryptedmsg encryptedmsg=encrypt(texts,key) try: cursor.execute(f"INSERT INTO chat_record(ChatDate_time,ChatMsg) VALUE(NOW(),'{encryptedmsg}')") with open("EncryptionKey.dat","wb") as keyfile: pickle.dump(key,keyfile) tkinter.messagebox.showinfo("Success", "Message Encrypted Successfully") except FileNotFoundError as FnF: tkinter.messagebox.showerror("Error_Occured", f"{FnF}") #_____________________________________________________ btn1=tk.Button(root, text="Save",font=("San Francisco", 11),command=lambda: [ProcessedText(), contents.delete(0, tk.END)]) btn1.place(x=950,y=120,height=50,width=100) btn3=tk.Button(buttonframe, text="Decrypt",font=("San Francisco", 11),command=decrypt) btn3.grid(row=0,column=0,sticky=tk.E+tk.W) btn4=tk.Button(buttonframe, text="Exit",font=("San Francisco", 11),command=root.quit) btn4.grid(row=0,column=1,sticky=tk.E+tk.W) #_____________________________________________________ buttonframe.pack(fill='x') root.configure(bg="Gray9") root.mainloop() GUI() 

submitted by /u/DiligentBank7831
[link] [comments] 

Leave a Reply

Your email address will not be published. Required fields are marked *