{"id":20371,"date":"2022-11-04T14:16:51","date_gmt":"2022-11-04T08:46:51","guid":{"rendered":"https:\/\/copyassignment.com\/?p=20371"},"modified":"2022-12-03T18:59:52","modified_gmt":"2022-12-03T13:29:52","slug":"gui-to-do-list-app-in-python-tkinter","status":"publish","type":"post","link":"https:\/\/copyassignment.com\/gui-to-do-list-app-in-python-tkinter\/","title":{"rendered":"GUI To-Do List App in Python Tkinter"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\"><strong>Introduction<\/strong><\/h2>\n\n\n\n<p>Hello friends, today we will create GUI To-Do List App in Python Tkinter. Python tkinter is a standard Python interface to the Tk GUI toolkit. The design of this system is rather straightforward, so the user will encounter no issues when working on it.<\/p>\n\n\n\n<p>We will be using the <a href=\"https:\/\/docs.python.org\/3\/library\/tkinter.html\" target=\"_blank\" rel=\"noreferrer noopener\">tkinter<\/a> library for GUI and <a href=\"https:\/\/docs.python.org\/3\/library\/sqlite3.html\" target=\"_blank\" rel=\"noreferrer noopener\">SQLite<\/a> for the database. After the 2.5 version of Python, both libraries are builtin with python.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>GUI To-Do List App in Python Tkinter<\/strong>: Project Overview<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><strong>Project Name:<\/strong><\/td><td><strong>GUI To-Do List App in Python Tkinter<\/strong><\/td><\/tr><tr><td><strong>Abstract<\/strong><\/td><td>It\u2019s a GUI-based project used with the tkinter module to organize all the elements that work under the to-do list app in python.<\/td><\/tr><tr><td><strong>Language\/s Used:<\/strong><\/td><td>Python<\/td><\/tr><tr><td><strong>IDE<\/strong><\/td><td>PyCharm and Thonny(recommended for beginners)<\/td><\/tr><tr><td><strong>Python version (Recommended):<\/strong><\/td><td><strong>Python 3.x<\/strong><\/td><\/tr><tr><td><strong>Database:<\/strong><\/td><td>SQLite<\/td><\/tr><tr><td><strong>Type:<\/strong><\/td><td>Desktop Application<\/td><\/tr><tr><td>Recommended for<\/td><td>Beginner and intermediate Python programmers<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<script async=\"\" src=\"https:\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js\"><\/script>\n<ins class=\"adsbygoogle\" style=\"display:block; text-align:center;\" data-ad-layout=\"in-article\" data-ad-format=\"fluid\" data-ad-client=\"ca-pub-9886351916045880\" data-ad-slot=\"2002566052\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script>\n\n\n\n<h2 class=\"wp-block-heading\">Complete code to create GUI To-Do List App in Python Tkinter:<\/h2>\n\n\n\n<div style=\"height: 250px; position:relative; margin-bottom: 50px;\" class=\"wp-block-simple-code-block-ace\"><div style=\"position:absolute;top:-20px;right:0px;cursor:pointer\" class=\"copy-simple-code-block\"><span class=\"dashicon dashicons dashicons-admin-page\"><\/span><\/div><pre class=\"wp-block-simple-code-block-ace\" style=\"position:absolute;top:0;right:0;bottom:0;left:0\" data-mode=\"python\" data-theme=\"xcode\" data-fontsize=\"14\" data-lines=\"Infinity\" data-showlines=\"true\" data-copy=\"true\"># importing the required modules                            \nfrom tkinter import *\n# importing the messagebox module from the tkinter library  \nfrom tkinter import messagebox\n# importing the sqlite3 module as sql  \nimport sqlite3 as sql\n \n\n# defining the function to add tasks to the list  \ndef add_task():  \n    # getting the string from the entry field  \n    task_string = task_field.get()  \n    # checking whether the string is empty or not  \n    if len(task_string) == 0:  \n        # displaying a message box with 'Empty Field' message  \n        messagebox.showinfo('Error', 'Field is Empty.')  \n    else:  \n        # adding the string to the tasks list  \n        tasks.append(task_string)  \n        # using the execute() method to execute a SQL statement  \n        the_cursor.execute('insert into tasks values (?)', (task_string ,))  \n        # calling the function to update the list  \n        list_update()  \n        # deleting the entry in the entry field  \n        task_field.delete(0, 'end')  \n  \n# defining the function to update the list  \ndef list_update():  \n    # calling the function to clear the list  \n    clear_list()  \n    # iterating through the strings in the list  \n    for task in tasks:  \n        # using the insert() method to insert the tasks in the list box  \n        task_listbox.insert('end', task)  \n  \n# defining the function to delete a task from the list  \ndef delete_task():  \n    # using the try-except method  \n    try:  \n        # getting the selected entry from the list box  \n        the_value = task_listbox.get(task_listbox.curselection())  \n        # checking if the stored value is present in the tasks list  \n        if the_value in tasks:  \n            # removing the task from the list  \n            tasks.remove(the_value)  \n            # calling the function to update the list  \n            list_update()  \n            # using the execute() method to execute a SQL statement  \n            the_cursor.execute('delete from tasks where title = ?', (the_value,))  \n    except:  \n        # displaying the message box with 'No Item Selected' message for an exception  \n        messagebox.showinfo('Error', 'No Task Selected. Cannot Delete.')        \n  \n# function to delete all tasks from the list  \ndef delete_all_tasks():  \n    # displaying a message box to ask user for confirmation  \n    message_box = messagebox.askyesno('Delete All', 'Are you sure?')  \n    # if the value turns to be True  \n    if message_box == True:  \n        # using while loop to iterate through the tasks list until it's empty   \n        while(len(tasks) != 0):  \n            # using the pop() method to pop out the elements from the list  \n            tasks.pop()  \n        # using the execute() method to execute a SQL statement  \n        the_cursor.execute('delete from tasks')  \n        # calling the function to update the list  \n        list_update()  \n  \n# function to clear the list  \ndef clear_list():  \n    # using the delete method to delete all entries from the list box  \n    task_listbox.delete(0, 'end')  \n  \n# function to close the application  \ndef close():  \n    # printing the elements from the tasks list  \n    print(tasks)  \n    # using the destroy() method to close the application  \n    guiWindow.destroy()  \n  \n# function to retrieve data from the database  \ndef retrieve_database():  \n    # using the while loop to iterate through the elements in the tasks list  \n    while(len(tasks) != 0):  \n        # using the pop() method to pop out the elements from the list  \n        tasks.pop()  \n    # iterating through the rows in the database table  \n    for row in the_cursor.execute('select title from tasks'):  \n        # using the append() method to insert the titles from the table in the list  \n        tasks.append(row[0])  \n  \n# main function  \nif __name__ == \"__main__\":  \n    # creating an object of the Tk() class  \n    guiWindow = Tk()  \n    # setting the title of the window  \n    guiWindow.title(\"To-Do List \")  \n    # setting the geometry of the window  \n    guiWindow.geometry(\"665x400+550+250\")  \n    # disabling the resizable option  \n    guiWindow.resizable(0, 0)  \n    # setting the background color to #B5E5CF \n    guiWindow.configure(bg = \"#B5E5CF\")  \n  \n    # using the connect() method to connect to the database  \n    the_connection = sql.connect('listOfTasks.db')  \n    # creating the cursor object of the cursor class  \n    the_cursor = the_connection.cursor()  \n    # using the execute() method to execute a SQL statement  \n    the_cursor.execute('create table if not exists tasks (title text)')  \n  \n    # defining an empty list  \n    tasks = []  \n      \n    # defining frames using the tk.Frame() widget  \n    functions_frame = Frame(guiWindow, bg = \"black\") \n  \n    # using the pack() method to place the frames in the application  \n    functions_frame.pack(side = \"top\", expand = True, fill = \"both\")  \n \n      \n\n    # defining another label using the Label() widget  \n    task_label = Label( functions_frame,text = \"Enter the Task:\",  \n        font = (\"arial\", \"14\", \"bold\"),  \n        background = \"black\", \n        foreground=\"white\"\n    )  \n    # using the place() method to place the label in the application  \n    task_label.place(x = 20, y = 30)  \n      \n    # defining an entry field using the Entry() widget  \n    task_field = Entry(  \n        functions_frame,  \n        font = (\"Arial\", \"14\"),  \n        width = 42,  \n        foreground=\"black\",\n        background = \"white\",  \n    )  \n    # using the place() method to place the entry field in the application  \n    task_field.place(x = 180, y = 30)  \n  \n    # adding buttons to the application using the Button() widget  \n    add_button =Button(  \n        functions_frame,  \n        text = \"Add Task\",  \n        width = 15,\n        bg='#D4AC0D',font=(\"arial\", \"14\", \"bold\"),\n        command = add_task,\n        \n    )  \n    del_button = Button(  \n        functions_frame,  \n        text = \"Delete Task\",  \n        width = 15,\n        bg='#D4AC0D', font=(\"arial\", \"14\", \"bold\"),\n        command = delete_task,  \n    )  \n    del_all_button = Button(  \n        functions_frame,  \n        text = \"Delete All Tasks\",  \n        width = 15,\n        font=(\"arial\", \"14\", \"bold\"),\n        bg='#D4AC0D',\n        command = delete_all_tasks  \n    )  \n    exit_button = Button(  \n        functions_frame,  \n        text = \"Exit\",  \n        width = 52,\n        bg='#D4AC0D',  font=(\"arial\", \"14\", \"bold\"),\n        command = close  \n    )  \n    # using the place() method to set the position of the buttons in the application  \n    add_button.place(x = 18, y = 80,)  \n    del_button.place(x = 240, y = 80)  \n    del_all_button.place(x = 460, y = 80)  \n    exit_button.place(x = 17, y = 330)  \n  \n    # defining a list box using the tk.Listbox() widget  \n    task_listbox = Listbox(  \n        functions_frame,  \n        width = 57,  \n        height = 7,  \n        font=\"bold\",\n        selectmode = 'SINGLE',  \n        background = \"WHITE\",\n        foreground=\"BLACK\",    \n        selectbackground = \"#D4AC0D\",  \n        selectforeground=\"BLACK\"\n    )  \n    # using the place() method to place the list box in the application  \n    task_listbox.place(x = 17, y = 140)  \n  \n    # calling some functions  \n    retrieve_database()  \n    list_update()  \n    # using the mainloop() method to run the application  \n    guiWindow.mainloop()  \n    # establishing the connection with database  \n    the_connection.commit()  \n    the_cursor.close()<\/pre><\/div>\n\n\n\n<p>Now, let&#8217;s understand our GUI To-Do List App in Python Tkinter step by step by breaking code into sub-parts.<\/p>\n\n\n\n<script async=\"\" src=\"https:\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js\"><\/script>\n<ins class=\"adsbygoogle\" style=\"display:block; text-align:center;\" data-ad-layout=\"in-article\" data-ad-format=\"fluid\" data-ad-client=\"ca-pub-9886351916045880\" data-ad-slot=\"2002566052\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script>\n\n\n\n<h3 class=\"wp-block-heading\" style=\"font-size:22px\">Step.1: Import libraries for To-Do List App<\/h3>\n\n\n\n<div style=\"height: 250px; position:relative; margin-bottom: 50px;\" class=\"wp-block-simple-code-block-ace\"><div style=\"position:absolute;top:-20px;right:0px;cursor:pointer\" class=\"copy-simple-code-block\"><span class=\"dashicon dashicons dashicons-admin-page\"><\/span><\/div><pre class=\"wp-block-simple-code-block-ace\" style=\"position:absolute;top:0;right:0;bottom:0;left:0\" data-mode=\"python\" data-theme=\"xcode\" data-fontsize=\"14\" data-lines=\"Infinity\" data-showlines=\"true\" data-copy=\"true\"># importing the required modules                            \nfrom tkinter import *\n# importing the messagebox module from the tkinter library  \nfrom tkinter import messagebox\n# importing the sqlite3 module as sql  \nimport sqlite3 as sql<\/pre><\/div>\n\n\n\n<p>In the above code, we imported the tkinter module as tk. The Tkinter messagebox was then imported. Finally, the sqlite3 module was loaded as sql.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" style=\"font-size:22px\">Step.2: Creating function for buttons:<\/h3>\n\n\n\n<div style=\"height: 250px; position:relative; margin-bottom: 50px;\" class=\"wp-block-simple-code-block-ace\"><div style=\"position:absolute;top:-20px;right:0px;cursor:pointer\" class=\"copy-simple-code-block\"><span class=\"dashicon dashicons dashicons-admin-page\"><\/span><\/div><pre class=\"wp-block-simple-code-block-ace\" style=\"position:absolute;top:0;right:0;bottom:0;left:0\" data-mode=\"python\" data-theme=\"xcode\" data-fontsize=\"14\" data-lines=\"Infinity\" data-showlines=\"true\" data-copy=\"true\"># defining the function to add tasks to the list  \ndef add_task():  \n    # getting the string from the entry field  \n    task_string = task_field.get()  \n    # checking whether the string is empty or not  \n    if len(task_string) == 0:  \n        # displaying a message box with 'Empty Field' message  \n        messagebox.showinfo('Error', 'Field is Empty.')  \n    else:  \n        # adding the string to the tasks list  \n        tasks.append(task_string)  \n        # using the execute() method to execute a SQL statement  \n        the_cursor.execute('insert into tasks values (?)', (task_string ,))  \n        # calling the function to update the list  \n        list_update()  \n        # deleting the entry in the entry field  \n        task_field.delete(0, 'end')<\/pre><\/div>\n\n\n\n<p>The above code determines if the string is inserted or not and stores it in the database of the To-Do List App.<\/p>\n\n\n\n<div style=\"height: 250px; position:relative; margin-bottom: 50px;\" class=\"wp-block-simple-code-block-ace\"><div style=\"position:absolute;top:-20px;right:0px;cursor:pointer\" class=\"copy-simple-code-block\"><span class=\"dashicon dashicons dashicons-admin-page\"><\/span><\/div><pre class=\"wp-block-simple-code-block-ace\" style=\"position:absolute;top:0;right:0;bottom:0;left:0\" data-mode=\"sh\" data-theme=\"xcode\" data-fontsize=\"14\" data-lines=\"Infinity\" data-showlines=\"true\" data-copy=\"true\"># defining the function to update the list  \ndef list_update():  \n    # calling the function to clear the list  \n    clear_list()  \n    # iterating through the strings in the list  \n    for task in tasks:  \n        # using the insert() method to insert the tasks in the list box  \n        task_listbox.insert('end', task)  \n \n# defining the function to delete a task from the list  \ndef delete_task():  \n    # using the try-except method  \n    try:  \n        # getting the selected entry from the list box  \n        the_value = task_listbox.get(task_listbox.curselection())  \n        # checking if the stored value is present in the tasks list  \n        if the_value in tasks:  \n            # removing the task from the list  \n            tasks.remove(the_value)  \n            # calling the function to update the list  \n            list_update()  \n            # using the execute() method to execute a SQL statement  \n            the_cursor.execute('delete from tasks where title = ?', (the_value,))  \n    except:  \n        # displaying the message box with 'No Item Selected' message for an exception  \n        messagebox.showinfo('Error', 'No Task Selected. Cannot Delete.')\n \n# function to delete all tasks from the list  \ndef delete_all_tasks():  \n    # displaying a message box to ask user for confirmation  \n    message_box = messagebox.askyesno('Delete All', 'Are you sure?')  \n    # if the value turns to be True  \n    if message_box == True:  \n        # using while loop to iterate through the tasks list until it's empty  \n        while(len(tasks) != 0):  \n            # using the pop() method to pop out the elements from the list  \n            tasks.pop()  \n        # using the execute() method to execute a SQL statement  \n        the_cursor.execute('delete from tasks')  \n        # calling the function to update the list  \n        list_update()\n\n# function to clear the list  \ndef clear_list():  \n    # using the delete method to delete all entries from the list box  \n    task_listbox.delete(0, 'end')\n\n# function to close the application  \ndef close():  \n    # printing the elements from the tasks list  \n    print(tasks)  \n    # using the destroy() method to close the application  \n    guiWindow.destroy()\n\n# function to retrieve data from the database  \ndef retrieve_database():  \n    # using the while loop to iterate through the elements in the tasks list  \n    while(len(tasks) != 0):  \n        # using the pop() method to pop out the elements from the list  \n        tasks.pop()  \n    # iterating through the rows in the database table  \n    for row in the_cursor.execute('select title from tasks'):  \n        # using the append() method to insert the titles from the table in the list  \n        tasks.append(row[0])<\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\" style=\"font-size:22px\">Step.3: Creating GUI of To-Do List App<\/h3>\n\n\n\n<div style=\"height: 250px; position:relative; margin-bottom: 50px;\" class=\"wp-block-simple-code-block-ace\"><div style=\"position:absolute;top:-20px;right:0px;cursor:pointer\" class=\"copy-simple-code-block\"><span class=\"dashicon dashicons dashicons-admin-page\"><\/span><\/div><pre class=\"wp-block-simple-code-block-ace\" style=\"position:absolute;top:0;right:0;bottom:0;left:0\" data-mode=\"python\" data-theme=\"xcode\" data-fontsize=\"14\" data-lines=\"Infinity\" data-showlines=\"true\" data-copy=\"true\"># main function  \nif __name__ == \"__main__\":  \n    # creating an object of the Tk() class  \n    guiWindow = Tk()  \n    # setting the title of the window  \n    guiWindow.title(\"To-Do List \")  \n    # setting the geometry of the window  \n    guiWindow.geometry(\"665x400+550+250\")  \n    # disabling the resizable option  \n    guiWindow.resizable(0, 0)  \n    # setting the background color to #B5E5CF\n    guiWindow.configure(bg = \"#B5E5CF\")  \n \n    # using the connect() method to connect to the database  \n    the_connection = sql.connect('listOfTasks.db')  \n    # creating the cursor object of the cursor class  \n    the_cursor = the_connection.cursor()  \n    # using the execute() method to execute a SQL statement  \n    the_cursor.execute('create table if not exists tasks (title text)')  \n \n    # defining an empty list  \n    tasks = []  \n     \n    # defining frames using the tk.Frame() widget  \n    functions_frame = Frame(guiWindow, bg = \"black\")\n \n    # using the pack() method to place the frames in the application  \n    functions_frame.pack(side = \"top\", expand = True, fill = \"both\")<\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\" style=\"font-size:22px\">Step.4: Create a task entry widget and design the button<\/h3>\n\n\n\n<div style=\"height: 250px; position:relative; margin-bottom: 50px;\" class=\"wp-block-simple-code-block-ace\"><div style=\"position:absolute;top:-20px;right:0px;cursor:pointer\" class=\"copy-simple-code-block\"><span class=\"dashicon dashicons dashicons-admin-page\"><\/span><\/div><pre class=\"wp-block-simple-code-block-ace\" style=\"position:absolute;top:0;right:0;bottom:0;left:0\" data-mode=\"python\" data-theme=\"xcode\" data-fontsize=\"14\" data-lines=\"Infinity\" data-showlines=\"true\" data-copy=\"true\">    # defining another label using the Label() widget  \n    task_label = Label( functions_frame,text = \"Enter the Task:\",  \n        font = (\"arial\", \"14\", \"bold\"),  \n        background = \"black\",\n        foreground=\"white\"\n    )  \n    # using the place() method to place the label in the application  \n    task_label.place(x = 20, y = 30)  \n     \n    # defining an entry field using the Entry() widget  \n    task_field = Entry(  \n        functions_frame,  \n        font = (\"Arial\", \"14\"),  \n        width = 42,  \n        foreground=\"black\",\n        background = \"white\",  \n    )  \n    # using the place() method to place the entry field in the application  \n    task_field.place(x = 180, y = 30)  \n \n    # adding buttons to the application using the Button() widget  \n    add_button =Button(  \n        functions_frame,  \n        text = \"Add Task\",  \n        width = 15,\n        bg='#D4AC0D',font=(\"arial\", \"14\", \"bold\"),\n        command = add_task,\n       \n    )  \n    del_button = Button(  \n        functions_frame,  \n        text = \"Delete Task\",  \n        width = 15,\n        bg='#D4AC0D', font=(\"arial\", \"14\", \"bold\"),\n        command = delete_task,  \n    )  \n    del_all_button = Button(  \n        functions_frame,  \n        text = \"Delete All Tasks\",  \n        width = 15,\n        font=(\"arial\", \"14\", \"bold\"),\n        bg='#D4AC0D',\n        command = delete_all_tasks  \n    )  \n    exit_button = Button(  \n        functions_frame,  \n        text = \"Exit\",  \n        width = 52,\n        bg='#D4AC0D',  font=(\"arial\", \"14\", \"bold\"),\n        command = close  \n    )  \n    # using the place() method to set the position of the buttons in the application  \n    add_button.place(x = 18, y = 80,)  \n    del_button.place(x = 240, y = 80)  \n    del_all_button.place(x = 460, y = 80)  \n    exit_button.place(x = 17, y = 330)<\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\" style=\"font-size:22px\">Step.5: Creating list box layout and updating the database<\/h3>\n\n\n\n<div style=\"height: 250px; position:relative; margin-bottom: 50px;\" class=\"wp-block-simple-code-block-ace\"><pre class=\"wp-block-simple-code-block-ace\" style=\"position:absolute;top:0;right:0;bottom:0;left:0\" data-mode=\"python\" data-theme=\"xcode\" data-fontsize=\"14\" data-lines=\"Infinity\" data-showlines=\"true\" data-copy=\"false\">    # defining a list box using the tk.Listbox() widget  \n    task_listbox = Listbox(  \n        functions_frame,  \n        width = 57,  \n        height = 7,  \n        font=\"bold\",\n        selectmode = 'SINGLE',  \n        background = \"WHITE\",\n        foreground=\"BLACK\",    \n        selectbackground = \"#D4AC0D\",  \n        selectforeground=\"BLACK\"\n    )  \n    # using the place() method to place the list box in the application  \n    task_listbox.place(x = 17, y = 140)  \n \n    # calling some functions  \n    retrieve_database()  \n    list_update()  \n    # using the mainloop() method to run the application  \n    guiWindow.mainloop()  \n    # establishing the connection with database  \n    the_connection.commit()  \n    the_cursor.close()<\/pre><\/div>\n\n\n\n<script async=\"\" src=\"https:\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js\"><\/script>\n<ins class=\"adsbygoogle\" style=\"display:block; text-align:center;\" data-ad-layout=\"in-article\" data-ad-format=\"fluid\" data-ad-client=\"ca-pub-9886351916045880\" data-ad-slot=\"2002566052\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script>\n\n\n\n<p>The Listbox widget is used to show the user the list of items. The location of the listbox is also specified. Python calls window.mainloop() to start the Tkinter event loop for To-Do List App.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Output for GUI To-Do List App in Python Tkinter:<\/h2>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" data-src=\"https:\/\/lh6.googleusercontent.com\/SoWp2pFu2RO9KAClbXpwXf9jml_nPKRh6P3aQi2kv-eCMUCsNaorATXcuLlnwae9pA7SMIsyZrFWIAFGXPPKSoqWJ7L2uiWfbuExgN17kgzgL2GQUDYWlHtdJ1DtSeevgVSNxiMckSsOIqbjD8LjQqRRXtTc3dj4IFgZtHywzYeome_YsvbRk0E\" alt=\"Output of GUI To-Do List App in Python Tkinter\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" \/><\/figure>\n\n\n\n<script async src=\"https:\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js?client=ca-pub-9886351916045880\"\n     crossorigin=\"anonymous\"><\/script>\n<ins class=\"adsbygoogle\"\n     style=\"display:block\"\n     data-ad-format=\"autorelaxed\"\n     data-ad-client=\"ca-pub-9886351916045880\"\n     data-ad-slot=\"7933252109\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script>\n\n\n\n<p>We successfully created the GUI To-Do List App in Python Tkinter. This project is suitable for students who wish to learn Python programming since it has a Graphical User Interface (GUI) and a user-friendly interface. This project on To-Do List App is easy to understand and run, and it is exclusively for educational purposes.<\/p>\n\n\n\n<div style=\"text-align:center\" class=\"wp-block-atomic-blocks-ab-button ab-block-button\"><a href=\"https:\/\/copyassignment.com\/top-100-python-projects-with-source-code\/\" class=\"ab-button ab-button-shape-rounded ab-button-size-medium\" style=\"color:#ffffff;background-color:#3373dc\">Best 100+ Python Projects with source code<\/a><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p><strong>Also Read:<\/strong><\/p>\n\n\n<ul class=\"wp-block-latest-posts__list is-grid columns-3 wp-block-latest-posts\"><li><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/copyassignment.com\/brick-breaker-game-in-cpp\/\">Brick Breaker Game in C++<\/a><\/li>\n<li><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/copyassignment.com\/create-your-own-chatgpt-with-python\/\">Create your own ChatGPT with\u00a0Python<\/a><\/li>\n<li><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/copyassignment.com\/bakery-management-system-in-python-class-12-project\/\">Bakery Management System in Python | Class 12 Project<\/a><\/li>\n<li><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/copyassignment.com\/sqlite-crud-operations-in-python\/\">SQLite | CRUD Operations in Python<\/a><\/li>\n<li><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/copyassignment.com\/event-management-system-project-in-python\/\">Event Management System Project in Python<\/a><\/li>\n<li><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/copyassignment.com\/ticket-booking-and-management-in-python\/\">Ticket Booking and Management in Python<\/a><\/li>\n<li><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/copyassignment.com\/hostel-management-system-project-in-python\/\">Hostel Management System Project in Python<\/a><\/li>\n<li><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/copyassignment.com\/sales-management-system-project-in-python\/\">Sales Management System Project in Python<\/a><\/li>\n<li><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/copyassignment.com\/bank-management-system-project-in-cpp\/\">Bank Management System Project in C++<\/a><\/li>\n<li><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/copyassignment.com\/python-download-file-from-url-4-methods\/\">Python Download File from URL | 4 Methods<\/a><\/li>\n<li><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/copyassignment.com\/python-programming-examples-fundamental-programs-in-python\/\">Python Programming Examples | Fundamental Programs in Python<\/a><\/li>\n<li><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/copyassignment.com\/spell-checker-in-python\/\">Spell Checker in Python<\/a><\/li>\n<li><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/copyassignment.com\/portfolio-management-system-in-python\/\">Portfolio Management System in Python<\/a><\/li>\n<li><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/copyassignment.com\/stickman-game-in-python\/\">Stickman Game in Python<\/a><\/li>\n<li><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/copyassignment.com\/contact-book-project-in-python\/\">Contact Book project in Python<\/a><\/li>\n<li><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/copyassignment.com\/loan-management-system-project-in-python\/\">Loan Management System Project in Python<\/a><\/li>\n<li><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/copyassignment.com\/cab-booking-system-in-python\/\">Cab Booking System in Python<\/a><\/li>\n<li><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/copyassignment.com\/brick-breaker-game-in-python\/\">Brick Breaker Game in Python<\/a><\/li>\n<li><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/copyassignment.com\/100-java-projects-for-beginners-2023\/\">100+ Java Projects for Beginners 2023<\/a><\/li>\n<li><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/copyassignment.com\/tank-game-in-python\/\">Tank game in Python<\/a><\/li>\n<li><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/copyassignment.com\/gui-piano-in-python\/\">GUI Piano in Python<\/a><\/li>\n<li><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/copyassignment.com\/best-javascript-projects-for-beginners-in-2023\/\">Best JavaScript Projects for Beginners in 2023<\/a><\/li>\n<li><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/copyassignment.com\/ludo-game-in-python\/\">Ludo Game in Python<\/a><\/li>\n<li><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/copyassignment.com\/rock-paper-scissors-game-in-python\/\">Rock Paper Scissors Game in Python<\/a><\/li>\n<li><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/copyassignment.com\/snake-and-ladder-game-in-python\/\">Snake and Ladder Game in Python<\/a><\/li>\n<li><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/copyassignment.com\/puzzle-game-in-python\/\">Puzzle Game in Python<\/a><\/li>\n<li><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/copyassignment.com\/medical-store-management-system-project-in-python\/\">Medical Store Management System Project in\u00a0Python<\/a><\/li>\n<li><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/copyassignment.com\/creating-dino-game-in-python\/\">Creating Dino Game in Python<\/a><\/li>\n<li><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/copyassignment.com\/tic-tac-toe-game-in-python\/\">Tic Tac Toe Game in Python<\/a><\/li>\n<li><a class=\"wp-block-latest-posts__post-title\" href=\"https:\/\/copyassignment.com\/best-java-roadmap-for-beginners-2023\/\">Best Java Roadmap for Beginners 2023<\/a><\/li>\n<\/ul>","protected":false},"excerpt":{"rendered":"<p>Introduction Hello friends, today we will create GUI To-Do List App in Python Tkinter. Python tkinter is a standard Python interface to the Tk GUI&#8230;<\/p>\n","protected":false},"author":62,"featured_media":20373,"comment_status":"closed","ping_status":"closed","sticky":true,"template":"","format":"standard","meta":{"footnotes":""},"categories":[22,1061,1403],"tags":[],"class_list":["post-20371","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-allcategorites","category-gui-python-projects","category-python-projects","wpcat-22-id","wpcat-1061-id","wpcat-1403-id"],"_links":{"self":[{"href":"https:\/\/copyassignment.com\/wp-json\/wp\/v2\/posts\/20371","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/copyassignment.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/copyassignment.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/copyassignment.com\/wp-json\/wp\/v2\/users\/62"}],"replies":[{"embeddable":true,"href":"https:\/\/copyassignment.com\/wp-json\/wp\/v2\/comments?post=20371"}],"version-history":[{"count":0,"href":"https:\/\/copyassignment.com\/wp-json\/wp\/v2\/posts\/20371\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/copyassignment.com\/wp-json\/wp\/v2\/media\/20373"}],"wp:attachment":[{"href":"https:\/\/copyassignment.com\/wp-json\/wp\/v2\/media?parent=20371"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/copyassignment.com\/wp-json\/wp\/v2\/categories?post=20371"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/copyassignment.com\/wp-json\/wp\/v2\/tags?post=20371"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}