secret-notes

A "secret" note taking app written in Python with Tkinter.
git clone git://git.b1t.dev/secret-notes.git
Log | Files | Refs

notes.py (9885B)


      1 from email.mime import image
      2 import os
      3 import tkinter as tk
      4 from tkinter import messagebox
      5 class Notes:
      6     def __init__( self, master=None ):
      7         self.master = master
      8         
      9     def register_user( self ):
     10         username_info = self.username.get()
     11         password_info = self.password.get()
     12         
     13         try:
     14             os.makedirs(username_info)
     15             os.chdir(username_info)
     16             
     17             file = open(username_info, "w")
     18             file.write("Username:\n")
     19             file.write(username_info + "\n")
     20             file.write("Password:\n")
     21             file.write(password_info)
     22             file.close()
     23         except FileExistsError:
     24             self.register_screen.config(text='User Already Created!')
     25             
     26         self.entry_username.delete(0, tk.END)
     27         self.entry_password.delete(0, tk.END)
     28 
     29     def save_file( self ):
     30         create_notes = self.file_name.get()
     31         get_notes = create_notes.get()
     32         
     33         data = open(self.file_name, "w")
     34         data.write(get_notes)
     35         data.close()
     36         
     37         tk.Label(self.notes_screen, text="Text File Saved", fg="#36BB00", font=("Lato", 12)).pack()
     38 
     39     def login_completed( self ):
     40         self.dashboard_screen = tk.Toplevel(self.master)
     41         self.dashboard_screen.title("Dashboard")
     42         self.dashboard_screen.geometry("350x250")
     43         
     44         welcome_user = self.user_verify.get()
     45         
     46         tk.Label(self.dashboard_screen, text="Welcome to the dashboard " + welcome_user + "!").pack() 
     47         tk.Button(self.dashboard_screen, text="Create secret note", command=self.create_secret_notes).pack()
     48         tk.Button(self.dashboard_screen, text="View secret note", command=self.view_notes).pack()
     49         tk.Button(self.dashboard_screen, text="Delete secret note", command=self.delete_notes).pack()
     50         
     51 
     52     def delete_notes( self ):
     53         self.register_screen0 = tk.Toplevel(self.master)
     54         self.register_screen0.title("Delete")
     55         self.register_screen0.geometry("350x250")
     56         
     57         list_files = os.listdir()
     58         
     59         tk.Label(self.register_screen0, text="Choose a filename to delete: ").pack()
     60         tk.Label(self.register_screen0, text=list_files).pack()
     61         
     62         self.delete_file = tk.StringVar()
     63         
     64         tk.Entry(self.register_screen0, textvariable=self.delete_file).pack()
     65         tk.Button(self.register_screen0, command=self.delete_notes_message, text="OK").pack()
     66 
     67 
     68     def delete_notes_message( self ):
     69         delete = self.delete_file.get()
     70         os.remove(delete)
     71         
     72         self.register_screen1 = tk.Toplevel(self.master)
     73         self.register_screen1.title("Notes")
     74         self.register_screen1.geometry("350x250")
     75         
     76         tk.Label(self.register_screen1, text=delete+" has been removed").pack()
     77 
     78 
     79     def create_secret_notes( self ):        
     80         self.file_name = tk.StringVar()
     81         create_notes = tk.StringVar()
     82         
     83         self.notes_screen = tk.Toplevel(self.master)
     84         self.notes_screen.title("Make Notes")
     85         self.notes_screen.geometry("350x250")
     86         
     87         tk.Label(self.notes_screen, text="Enter a filename: ").pack()
     88         tk.Entry(self.notes_screen, textvariable=self.file_name).pack()
     89         tk.Label(self.notes_screen, text="Enter secret notes: ").pack()
     90         tk.Entry(self.notes_screen, textvariable=create_notes).pack()
     91         tk.Button(self.notes_screen, text="Save", command=self.save_file).pack()
     92 
     93     def choose_files( self ):
     94         open_file_screen = tk.Toplevel(self.master)
     95         open_file_screen.title("Info")
     96         open_file_screen.geometry("350x250")
     97         
     98         list_files = os.listdir()
     99         
    100         tk.Label(open_file_screen, text="Choose a filename below: ").pack()
    101         tk.Label(open_file_screen, text=list_files).pack()
    102         
    103         self.file_name = tk.StringVar()
    104         
    105         tk.Entry(open_file_screen, textvariable=self.file_name).pack()
    106         tk.Button(open_file_screen, command=self.view_notes, text="OK").pack()
    107         
    108     def view_notes( self ):    
    109         read_file_screen = tk.Toplevel(self.master)
    110         read_file_screen.title("Notes")
    111         read_file_screen.geometry("350x250")    
    112         
    113         read_notes = open(self.file_name.get(), "r")
    114         data = read_notes.read()
    115         
    116         tk.Label(read_file_screen, text=data).pack()
    117 
    118     def login_verify( self ):
    119         get_username = self.user_verify.get()
    120         get_password = self.pass_verify.get()
    121 
    122         list_of_files = os.listdir("./test/")
    123         if get_username in list_of_files:
    124             self.file_name = str(get_username)
    125             
    126             # TODO: Remove after debugging is finished. 
    127             print("System: Debug file name " + self.file_name)
    128             
    129             # TODO: Files not saving in test.
    130             os.chdir("./test/" + self.file_name)
    131             
    132             file_open = open(get_username, "r")
    133             verify = file_open.read().splitlines()
    134             if get_password in verify:
    135                 self.login_completed()
    136             else:
    137                 tk.Label(self.login_screen, text="Password Error!", fg="#E81500", font=("Lato", 12)).pack()
    138         else:
    139             tk.Label(self.login_screen, text="User not found!", fg="#E81500", font=("Lato", 12)).pack()
    140 
    141 
    142     def login_page( self ):
    143         self.login_screen = tk.Toplevel(self.master)
    144         self.login_screen.title("Login")
    145         self.login_screen.geometry("350x250")
    146         self.login_screen.resizable(0,0)
    147 
    148         tk.Label(self.login_screen, text="Please enter your login details").pack()
    149         tk.Label(self.login_screen, text="").pack()
    150         
    151         self.user_verify = tk.StringVar()
    152         self.pass_verify = tk.StringVar()
    153 
    154         tk.Label(self.login_screen, text="Username").pack()
    155         self.entry_username1 = tk.Entry(self.login_screen, textvariable=self.user_verify)
    156         self.entry_username1.pack()
    157         
    158         tk.Label(self.login_screen, text="Password").pack()
    159         self.entry_password1 = tk.Entry(self.login_screen, textvariable=self.pass_verify)
    160         self.entry_password1.pack()
    161         
    162         tk.Label(self.login_screen, text="").pack()
    163         self.entry_password1.config(show="*")
    164         
    165         eye_icon_on = tk.PhotoImage(file="./assets/images/view.png")
    166         eye_icon_off = tk.PhotoImage(file="./assets/images/invisible.png")
    167         
    168         # TODO: Change up the tk.Buttons to have eyes instead of a bar. 
    169         # tk.Button(self.login_screen, image=eye_icon_on, height="25", width="25", command=lambda: self.password_show("show_login_password")).pack()
    170         # tk.Button(self.login_screen, image=eye_icon_off, height="1", width="10", command=lambda: self.password_show("hide_login_password")).pack()
    171         
    172         tk.Button(self.login_screen, text="Login", height="1", width="10", command=self.login_verify).pack()
    173 
    174     def password_show( self, button_click ):
    175         print("System: Debug button click " + button_click)
    176         if button_click == "show_login_password":
    177             self.entry_password1.config(show="") 
    178         elif button_click == "hide_login_password":
    179             self.entry_password1.config(show="*")
    180         elif button_click == "show_register_password":
    181             self.entry_password.config(show="") 
    182         else:
    183             self.entry_password.config(show="*")
    184             
    185     def register_page(self):
    186         self.register_screen = tk.Toplevel(self.master)
    187         self.register_screen.title("Register")
    188         self.register_screen.geometry("350x250")
    189         self.register_screen.resizable(0,0)
    190 
    191         self.username = tk.StringVar()
    192         self.password = tk.StringVar()
    193         
    194         tk.Label(self.register_screen, text="Please enter your details").pack()
    195         tk.Label(self.register_screen, text="").pack()
    196         
    197         tk.Label(self.register_screen, text="Username").pack()
    198         self.entry_username = tk.Entry(self.register_screen, textvariable=self.username)
    199         self.entry_username.pack()
    200         
    201         tk.Label(self.register_screen, text="Password").pack()
    202         self.entry_password = tk.Entry(self.register_screen, textvariable=self.password)
    203         self.entry_password.pack()
    204         
    205         tk.Label(self.register_screen, text="").pack() 
    206         self.entry_password.config(show="*")
    207         
    208         # TODO: Change up the tk.Buttons to have eyes instead of a bar. 
    209         # tk.Button(self.register_screen, text="Show password!", height="1", width="12", command=lambda: self.password_show("show_register_password")).pack()
    210         # tk.Button(self.register_screen, text="Hide password!", height="1", width="12", command=lambda: self.password_show("hide_register_password")).pack()
    211         tk.Button(self.register_screen, text="Register", height="1", width="10", command=self.register_user).pack()
    212 
    213         
    214     def screen( self ):        
    215         self.master.geometry("350x250")
    216         self.master.title("Secret Notes")
    217         self.master.iconphoto(True, tk.PhotoImage(file="./assets/images/favicon.png"))
    218         self.master.resizable(0,0)    
    219         
    220         tk.Label(text="Secret Notes", bg="#4BA400", fg="#FFFFFF", width="300", height="2", font=("Lato", 14)).pack()
    221         tk.Label(text="").pack()
    222         tk.Button(text="Login", height="1", width="25", font=("Lato", 12), command=self.login_page).pack()
    223         tk.Label(text="").pack()
    224         tk.Button(text="Register", height="1", width="25", font=("Lato", 12), command=self.register_page).pack()
    225         
    226         self.master.mainloop()
    227             
    228             
    229 if __name__ == '__main__':
    230     master = tk.Tk()
    231     note = Notes(master)
    232     note.screen()