Last active
November 7, 2020 07:28
-
-
Save shinysu/b42c833a3b9d13c8bf649f6709b49d6c to your computer and use it in GitHub Desktop.
ToDolist using PySimpleGUI and files
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
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() |
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 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