PySimpleGUI/PySimpleGUIWeb/Demo Programs/Web_Table_Element.py

71 lines
3.1 KiB
Python
Raw Normal View History

2019-03-15 02:28:49 +00:00
import PySimpleGUIWeb as sg
import random
import string
2019-03-15 14:03:43 +00:00
"""
ooooooooooooo .o8 oooo
8' 888 `8 "888 `888
888 .oooo. 888oooo. 888 .ooooo.
888 `P )88b d88' `88b 888 d88' `88b
888 .oP"888 888 888 888 888ooo888
888 d8( 888 888 888 888 888 .o
o888o `Y888""8o `Y8bod8P' o888o `Y8bod8P'
oooooooooooo oooo .
`888' `8 `888 .o8
888 888 .ooooo. ooo. .oo. .oo. .ooooo. ooo. .oo. .o888oo
888oooo8 888 d88' `88b `888P"Y88bP"Y88b d88' `88b `888P"Y88b 888
888 " 888 888ooo888 888 888 888 888ooo888 888 888 888
888 o 888 888 .o 888 888 888 888 .o 888 888 888 .
o888ooooood8 o888o `Y8bod8P' o888o o888o o888o `Y8bod8P' o888o o888o "888"
"""
2019-03-15 02:28:49 +00:00
# ------------------ Create a fake table ------------------
class Fake():
@classmethod
def word(self):
return ''.join(random.choice(string.ascii_lowercase) for i in range(10))
@classmethod
def number(self, max=1000):
return random.randint(0,max)
def make_table(num_rows, num_cols):
data = [[j for j in range(num_cols)] for i in range(num_rows)]
data[0] = [Fake.word() for _ in range(num_cols)]
for i in range(1, num_rows):
data[i] = [Fake.word(), *[Fake.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.T('Selected rows = '), sg.T('', size=(30,1), key='_selected_rows_')],
[sg.T('Selected value = '), sg.T('', size=(30,1), key='_selected_value_')]]
# ------------------ Create the window ------------------
window = sg.Window('Table Element Example').Layout(layout)
# ------------------ The Event Loop ------------------
while True:
event, values = window.Read()
2019-03-15 14:03:43 +00:00
print(event, values)
2019-03-15 02:28:49 +00:00
if event in (None, 'Exit'):
break
window.Element('_selected_rows_').Update(values['_table_'])
window.Element('_selected_value_').Update(window.Element('_table_').SelectedItem)
# ------------------ User closed window so exit ------------------
window.Close()