import PySimpleGUIWeb as sg
import random
import string

# Example with Table element

def word():
    return ''.join(random.choice(string.ascii_lowercase) for i in range(10))

def number(max_val=1000):
    return random.randint(0,max_val)


def make_table(num_rows, num_cols):
    data = [[j for j in range(num_cols)] for i in range(num_rows)]
    data[0] = [word() for _ in range(num_cols)]
    for i in range(1, num_rows):
        data[i] = [word(), *[number() for i in range(num_cols - 1)]]
    return data

table_data = make_table(num_rows=15, num_cols=6)

# ------------------ Create a window layout ------------------
layout = [[sg.Table(values=table_data, enable_events=True,
            display_row_numbers=True, font='Courier 14',
              row_header_text='Row #', key='_table_', text_color='red')],
          [sg.Button('Exit')],
          [sg.Text('Selected rows = '), sg.Text('', size=(30,1), key='_selected_rows_')],
          [sg.Text('Selected value = '), sg.Text('', size=(30,1), key='_selected_value_')]]

# ------------------ Create the window ------------------
window = sg.Window('Table Element Example', layout)

# ------------------ The Event Loop ------------------
while True:
    event, values = window.read()
    print(event, values)
    if event in (None, 'Exit'):
        break
    window['_selected_rows_'].update(values['_table_'])
    window['_selected_value_'].update(window['_table_'].SelectedItem)
# ------------------ User closed window so exit ------------------
window.close()