Post-It Notes Application Python Project

Notes-taking is a method of jotting down important information for reminders, chores, and other purposes. This keeps us informed about what has to be done and prevents us from neglecting critical duties. Let's look at a basic Python version of the Pin Your Note or sticky notes project.
The Python Sticky Notes project requires a database and an optional user interface to be implemented. SQLite3 is a built-in database in Python. As a result, we utilize the package to store and retrieve our notes.
Post-It Notes Application Project Requirements
No other libraries are required for this project. Tkinter is used to create the user interface, and SQlite3 is included.
Project File Structure:
The flow of the python project pin your notes is shown below.
1. Installing the required libraries
2. Establishing a database connection and constructing a table
3. Define functions for taking, editing, viewing, and deleting notes.
4. Creating a user interface is the fourth step.
Source Code for Post-It Notes Application Python Project
#Pin Your Note -TechVidvan #Import Necessary modules import sqlite3 as sql from tkinter import * from tkinter import messagebox # Create database connection and connect to table try: con = sql.connect('pin_your_note.db') cur = con.cursor() cur.execute('''CREATE TABLE notes_table (date text, notes_title text, notes text)''') except: print("Connected to table of database") # Insert a row of data def add_notes(): #Get input values today = date_entry.get() notes_title = notes_title_entry.get() notes = notes_entry.get("1.0", "end-1c") #Raise a prompt for missing values if (len(today) <=0) & (len(notes_title)<=0) & (len(notes)<=1): messagebox.showerror(message = "ENTER REQUIRED DETAILS" ) else: #Insert into the table cur.execute("INSERT INTO notes_table VALUES ('%s','%s','%s')" %(today, notes_title, notes)) messagebox.showinfo(message="Note added") #Commit to preserve the changes con.commit() #Display all the notes def view_notes(): #Obtain all the user input date = date_entry.get() notes_title = notes_title_entry.get() #If no input is given, retrieve all notes if (len(date) <=0) & (len(notes_title)<=0): sql_statement = "SELECT * FROM notes_table" #Retrieve notes matching a title elif (len(date) <=0) & (len(notes_title)>0): sql_statement = "SELECT * FROM notes_table where notes_title ='%s'" %notes_title #Retrieve notes matching a date elif (len(date) >0) & (len(notes_title)<=0): sql_statement = "SELECT * FROM notes_table where date ='%s'"%date #Retrieve notes matching the date and title else: sql_statement = "SELECT * FROM notes_table where date ='%s' and notes_title ='%s'" %(date, notes_title) #Execute the query cur.execute(sql_statement) #Obtain all the contents of the query row = cur.fetchall() #Check if none was retrieved if len(row)<=0: messagebox.showerror(message="No note found") else: #Print the notes for i in row: messagebox.showinfo(message="Date: "+i[0]+"\nTitle: "+i[1]+"\nNotes: "+i[2]) #Delete the notes def delete_notes(): #Obtain input values date = date_entry.get() notes_title = notes_title_entry.get() #Ask if user wants to delete all notes choice = messagebox.askquestion(message="Do you want to delete all notes?") #If yes is selected, delete all if choice == 'yes': sql_statement = "DELETE FROM notes_table" else: #Delete notes matching a particular date and title if (len(date) <=0) & (len(notes_title)<=0): #Raise error for no inputs messagebox.showerror(message = "ENTER REQUIRED DETAILS" ) return else: sql_statement = "DELETE FROM notes_table where date ='%s' and notes_title ='%s'" %(date, notes_title) #Execute the query cur.execute(sql_statement) messagebox.showinfo(message="Note(s) Deleted") con.commit() #Update the notes def update_notes(): #Obtain user input today = date_entry.get() notes_title = notes_title_entry.get() notes = notes_entry.get("1.0", "end-1c") #Check if input is given by the user if (len(today) <=0) & (len(notes_title)<=0) & (len(notes)<=1): messagebox.showerror(message = "ENTER REQUIRED DETAILS" ) #update the note else: sql_statement = "UPDATE notes_table SET notes = '%s' where date ='%s' and notes_title ='%s'" %(notes, today, notes_title) cur.execute(sql_statement) messagebox.showinfo(message="Note Updated") con.commit() #Invoke call to class to view a window window = Tk() #Set dimensions of window and title window.geometry("500x300") window.title("Pin Your Note -TechVidvan") title_label = Label(window, text="Pin Your Note -TechVidvan").pack() #Read inputs #Date input date_label = Label(window, text="Date:").place(x=10,y=20) date_entry = Entry(window, width=20) date_entry.place(x=50,y=20) #Notes Title input notes_title_label = Label(window, text="Notes title:").place(x=10,y=50) notes_title_entry = Entry(window, width=30) notes_title_entry.place(x=80,y=50) #Notes input notes_label = Label(window, text="Notes:").place(x=10,y=90) notes_entry = Text(window, width=50,height=5) notes_entry.place(x=60,y=90) #Perform notes functions button1 = Button(window,text='Add Notes', bg = 'Turquoise',fg='Red',command=add_notes).place(x=10,y=190) button2 = Button(window,text='View Notes', bg = 'Turquoise',fg='Red',command=view_notes).place(x=110,y=190) button3 = Button(window,text='Delete Notes', bg = 'Turquoise',fg='Red',command=delete_notes).place(x=210,y=190) button4 = Button(window,text='Update Notes', bg = 'Turquoise',fg='Red',command=update_notes).place(x=320,y=190) #close the app window.mainloop() con.close()
Output

Summary
As a result, we were able to create a notes taker in Python. This Python Pin Your Note project is an introduction to SQLite querying and creating a user interface with Tkinter.