diff --git a/assets/0.jpg b/assets/0.jpg new file mode 100644 index 0000000..8d6dd3e Binary files /dev/null and b/assets/0.jpg differ diff --git a/assets/1.jpg b/assets/1.jpg new file mode 100644 index 0000000..7c81164 Binary files /dev/null and b/assets/1.jpg differ diff --git a/assets/2.jpg b/assets/2.jpg new file mode 100644 index 0000000..f356f70 Binary files /dev/null and b/assets/2.jpg differ diff --git a/libs.py b/libs.py index 5346d81..61ed77b 100644 --- a/libs.py +++ b/libs.py @@ -1,4 +1,7 @@ import json +from PIL import Image +import io +import os def write_json(key, value): path = 'db.json' @@ -80,4 +83,11 @@ def add_child(child_id, name, birth): data['children'].append(new_child) - write_json('children', data['children']) \ No newline at end of file + write_json('children', data['children']) + +def get_pic(id): + image = Image.open(f"assets/{id}.jpg") + image.thumbnail((200, 200)) + bio = io.BytesIO() + image.save(bio, format="PNG") + return bio.getvalue() \ No newline at end of file diff --git a/main.py b/main.py index 1833318..43783fe 100644 --- a/main.py +++ b/main.py @@ -1,5 +1,4 @@ import PySimpleGUI as sg - import time from libs import * @@ -23,84 +22,98 @@ def login(): if event == sg.WINDOW_CLOSED or event == 'Sair': break - if validate_login(values['-USERNAME-'], values['-PASSWORD-']): - window.close() - return True - else: - window['-TEXT-'].update('Nome de usuário ou senha incorretos!') - window.refresh() - time.sleep(2) - window['-TEXT-'].update('') + if event == 'Login': + if validate_login(values['-USERNAME-'], values['-PASSWORD-']): + window.close() + return True + else: + window['-TEXT-'].update('Nome de usuário ou senha incorretos!') + window.refresh() + time.sleep(2) + window['-TEXT-'].update('') window.close() return False - +########################################################################################## + +def main_menu(): + sg.theme('BlueMono') + info_col = [ + [sg.T('ID: '), sg.T('', key='-ID-')], + [sg.T('Name: '), sg.T('', key='-NAME-')], + [sg.T('Birth: '), sg.T('', key='-BIRTH-')], + [sg.Image(data=get_pic(0), key='-IMAGE-')] + ] + + + layout = [ + [sg.Listbox(values=[row[1] for row in get_children()], size=(30, 17), key='-CHILDREN-', enable_events=True), sg.Col(info_col)], + [sg.Column([[sg.Button('Add'), sg.Button('Remove')]], justification='center')] + ] + + + window = sg.Window('Children App', layout, finalize=True) + window.set_min_size((500,350)) + + while True: + event, values = window.read() + if event == sg.WIN_CLOSED: + break + if event == '-CHILDREN-': + selected = values['-CHILDREN-'] + id, name, birth = get_child_by_name(selected[0]) + + window['-NAME-'].update(name) + window['-BIRTH-'].update(birth) + window['-ID-'].update(id) + window['-IMAGE-'].update(get_pic(id)) + + if event == 'Add': + add_layout = [ + [sg.T('Name')], + [sg.In(key='-NAME-')], + [sg.T('Birth')], + [sg.In(key='-BIRTH-')], + [sg.T('ID')], + [sg.In(key='-ID-')], + [sg.Button(button_text="OK")] + ] + + add_window = sg.Window('Add Child', add_layout) + add_event, add_values = add_window.read() + + if add_event == 'OK': + add_child(int(add_values['-ID-']), add_values['-NAME-'], add_values['-BIRTH-']) + window['-CHILDREN-'].update(values=[row[1] for row in get_children()]) + add_window.close() + + if event == 'Remove': + + selected = values['-CHILDREN-'][0] + + id_layout = [[sg.T(f'Você tem certeza que deseja remover {selected}?')], + [sg.T(f'Essa ação é PERMANENTE e IRREVERSÍVEL!', text_color="red")], + [sg.Button(button_text="OK")]] + + id_window = sg.Window('Remove Child', id_layout, element_justification='c') + id_event, id_values = id_window.read() + + if id_event == 'OK': + remove_child_by_id(get_child_by_name(selected)[0]) + window['-CHILDREN-'].update(values=[row[1] for row in get_children()]) + + id_window.close() + + window.close() + +############################################### def main(): if login(): print("Login sucessful") + main_menu() else: print("Login unsucessful") -########################################################################################## -sg.theme('BlueMono') +# main() +main_menu() -info_col = [[sg.T('Name: '), sg.T('', key='-NAME-')], - [sg.T('Birth: '), sg.T('', key='-BIRTH-')], - [sg.T('ID: '), sg.T('', key='-ID-')]] - - -layout = [ - [sg.Text('Children')], - [sg.Listbox(values=[row[1] for row in get_children()], size=(30, 10), key='-CHILDREN-', enable_events=True), sg.Col(info_col)], - [sg.Button('Add'), sg.Button('Remove')] -] - -window = sg.Window('Children App', layout) - -while True: - event, values = window.read() - if event == sg.WIN_CLOSED: - break - if event == '-CHILDREN-': - selected = values['-CHILDREN-'] - id, name, birth = get_child_by_name(selected[0]) - - window['-NAME-'].update(name) - window['-BIRTH-'].update(birth) - window['-ID-'].update(id) - - if event == 'Add': - add_layout = [ - [sg.T('Name')], - [sg.In(key='-NAME-')], - [sg.T('Birth')], - [sg.In(key='-BIRTH-')], - [sg.T('ID')], - [sg.In(key='-ID-')], - [sg.Button(button_text="OK")] - ] - - add_window = sg.Window('Add Child', add_layout) - add_event, add_values = add_window.read() - - if add_event == 'OK': - add_child(int(add_values['-ID-']), add_values['-NAME-'], add_values['-BIRTH-']) - window['-CHILDREN-'].update(values=[row[1] for row in get_children()]) - add_window.close() - - if event == 'Remove': - - id_layout = [[sg.T('Enter ID to remove')], - [sg.In(key='-ID-')], - [sg.Button(button_text="OK")]] - - id_window = sg.Window('Remove Child', id_layout) - id_event, id_values = id_window.read() - - if id_event == 'OK': - remove_child_by_id(int(id_values['-ID-'])) - window['-CHILDREN-'].update(values=[row[1] for row in get_children()]) - - id_window.close() - -window.close()