Skip to content

Instantly share code, notes, and snippets.

@shinysu
Last active November 7, 2020 07:28
Show Gist options
  • Save shinysu/b42c833a3b9d13c8bf649f6709b49d6c to your computer and use it in GitHub Desktop.
Save shinysu/b42c833a3b9d13c8bf649f6709b49d6c to your computer and use it in GitHub Desktop.
ToDolist using PySimpleGUI and files
def file_write(fname, tasks):
with open(fname, "w") as fp:
for x in tasks:
fp.write("%s\n" % x)
def file_read(fname):
tasks = []
try:
with open(fname, "r") as fp:
t1 = fp.readlines()
for x in t1:
tasks.append(x.rstrip('\n'))
return tasks
except FileNotFoundError:
print("File {} is not found".format(fname))
exit()
import PySimpleGUI as sg
from file_ops import file_write, file_read
filename = 'tasks.txt'
tasks = file_read(filename)
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', disabled=True)],
[sg.Listbox(values=tasks, size=(40, 10), font=("Arial", 14), key='items', enable_events=True),
sg.Button('Delete', font=("Arial", 14), key='delete', disabled=True),
sg.Button('Edit', key='edit', font=("Arial", 14), disabled=True)],
]
def check_enable_buttons():
if values["items"]:
window.FindElement('delete').Update(disabled=False)
window.FindElement('edit').Update(disabled=False)
if values["todo_item"].strip() != '':
window.FindElement('add_save').Update(disabled=False)
def add_tasks(values):
newtask = values['todo_item'].strip()
tasks.append(newtask)
window.FindElement('todo_item').Update(value="")
window.FindElement('items').Update(values=tasks)
window.FindElement('add_save').Update("Add")
window.FindElement('add_save').Update(disabled=True)
def delete_tasks(values):
tasks.remove(values["items"][0])
window.FindElement('items').Update(values=tasks)
def edit_tasks(values):
edit_val = values["items"][0]
print(edit_val)
tasks.remove(edit_val)
window.FindElement('todo_item').Update(value=edit_val)
window.FindElement('add_save').Update("Save")
if __name__ == '__main__':
window = sg.Window('Week1 App', layout)
while True:
event, values = window.Read()
if event == sg.WINDOW_CLOSED:
break
else:
check_enable_buttons()
if event == "add_save":
add_tasks(values)
elif event == "delete":
delete_tasks(values)
elif event == "edit":
edit_tasks(values)
file_write(filename, tasks)
window.Close()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment