70 lines
		
	
	
	
		
			3.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
	
		
			3.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import PySimpleGUIWeb as sg
 | |
| import random
 | |
| import string
 | |
| 
 | |
| """
 | |
| 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"                                                                          
 | |
| """
 | |
| 
 | |
| 
 | |
| # ------------------ 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()
 | |
|     print(event, values)
 | |
|     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()
 |