Created
December 4, 2020 09:22
-
-
Save shinysu/48e5275a671cca39438b8970a5989fae to your computer and use it in GitHub Desktop.
Todolist using SQLite database
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
''' | |
create_db.py - creates the table. | |
Note: This program should be run first to create the database and tables | |
''' | |
import sqlite3 | |
def create_table(): | |
sql_query = """ | |
CREATE TABLE tasks( | |
id INTEGER PRIMARY KEY, | |
taskname TEXT, | |
complete BOOLEAN); | |
""" | |
with sqlite3.connect("todo.db") as conn: | |
cur = conn.cursor() | |
cur.execute(sql_query) | |
conn.commit() | |
if __name__ == "__main__": | |
create_table() |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import sqlite3 | |
def insert_into_tasks_table(task): | |
sql_insert_query = """INSERT INTO tasks(taskname, complete) VALUES ('%s', %s) """ % (task, 0) | |
execute_query(sql_insert_query) | |
def execute_query(sql_query): | |
with sqlite3.connect("todo.db") as conn: | |
cur = conn.cursor() | |
result = cur.execute(sql_query) | |
conn.commit() | |
return result | |
def select_all_records(): | |
sql_select_query = """SELECT taskname FROM tasks WHERE complete = 0""" | |
result = execute_query(sql_select_query).fetchall() | |
return [x[0] for x in result] | |
if __name__ == "__main__": | |
select_all_records() |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import PySimpleGUI as sg | |
from db_ops import insert_into_tasks_table, select_all_records | |
tasks = select_all_records() | |
layout = [ | |
[sg.Text('Week1',font=("Arial", 14))], | |
[sg.InputText('', size=(40,1), font=("Arial", 14), key='todo_item', enable_events=True), | |
sg.Button(button_text='Add', bind_return_key=True, font=("Arial", 14), key='add_save')], | |
[sg.Listbox(values=tasks, size=(40, 10), font=("Arial", 14), key='items', enable_events=True), | |
sg.Button('Delete', font=("Arial", 14), key='delete'), | |
sg.Button('Edit', key='edit', font=("Arial", 14))], | |
] | |
def add_tasks(values): | |
if window.FindElement('add_save').GetText() == 'Add': | |
insert_into_tasks_table(values['todo_item']) | |
update_UI() | |
def update_UI(): | |
""" | |
uodate the input elements after every event | |
""" | |
tasks = select_all_records() | |
window.FindElement('items').Update(values=tasks) | |
window.FindElement('todo_item').Update(value="") | |
if __name__ == '__main__': | |
window = sg.Window('Week1 App', layout) | |
while True: | |
event, values = window.Read() | |
if event == sg.WINDOW_CLOSED: | |
break | |
if event == "add_save": | |
add_tasks(values) | |
'''elif event == "delete": | |
delete_tasks(values) | |
elif event == "edit": | |
edit_tasks(values)''' | |
window.Close() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment