Merge pull request #3465 from PySimpleGUI/Dev-latest
New vertical layout demo program
This commit is contained in:
		
						commit
						74f47faa50
					
				
					 1 changed files with 75 additions and 0 deletions
				
			
		
							
								
								
									
										75
									
								
								DemoPrograms/Demo_Layout_Vertical.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										75
									
								
								DemoPrograms/Demo_Layout_Vertical.py
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,75 @@ | ||||||
|  | import PySimpleGUI as sg | ||||||
|  | 
 | ||||||
|  | """ | ||||||
|  |     Demo of using the vertical layout parameters and layout helper functions. | ||||||
|  |     Three methods of vertical alignment are shown: | ||||||
|  |     1. Using Column element to align a single element | ||||||
|  |     2. Using vtop layout helper function to align a single element | ||||||
|  |     3. Using vtop layout helper function to align an entire row | ||||||
|  | 
 | ||||||
|  |     There is also a funciton provided that will convert an entire layout into  | ||||||
|  |     a top aligned layout. | ||||||
|  |      | ||||||
|  |     Copyright 2020 PySimpleGUI.org     | ||||||
|  | """ | ||||||
|  | 
 | ||||||
|  | def top_align_layout(layout): | ||||||
|  |     """ | ||||||
|  |     Given a layout, return a layout with all rows vertically adjusted to the top | ||||||
|  | 
 | ||||||
|  |     :param layout: List[List[sg.Element]] The layout to justify | ||||||
|  |     :return: List[List[sg.Element]]  The new layout that is all top justified | ||||||
|  |     """ | ||||||
|  |     new_layout = [] | ||||||
|  |     for row in layout: | ||||||
|  |         new_layout.append(sg.vtop(row)) | ||||||
|  |     return new_layout | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | def main(): | ||||||
|  |     # -------------------- Example 1 - No alignment -------------------- | ||||||
|  |     layout = [ [sg.T('This layout uses no vertical alignment. The default is "center"')], | ||||||
|  |                [sg.Text('On row 1'), sg.Listbox(list(range(10)), size=(5,4)), sg.Text('On row 1')], | ||||||
|  |                [sg.Button('OK')]  ] | ||||||
|  | 
 | ||||||
|  |     sg.Window('Window Title', layout).read(close=True) | ||||||
|  | 
 | ||||||
|  |     # -------------------- Example 2 - Top aligned Text element using Column -------------------- | ||||||
|  |     layout = [ [sg.T('This uses a Column Element to align 1 element')], | ||||||
|  |                [sg.Col([[sg.Text('On row 1')]], vertical_alignment='top', pad=(0,0)), sg.Listbox(list(range(10)), size=(5,4)), sg.Text('On row 1')], | ||||||
|  |                [sg.Button('OK')]  ] | ||||||
|  | 
 | ||||||
|  |     sg.Window('Window Title', layout).read(close=True) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     # -------------------- Example 3 - Top aligned Text element using Column -------------------- | ||||||
|  |     layout = [ [sg.T('This layout uses the "vtop" layout helper function on 1 element')], | ||||||
|  |                [sg.vtop(sg.Text('On row 1')), sg.Listbox(list(range(10)), size=(5,4)), sg.Text('On row 1')], | ||||||
|  |                [sg.Button('OK')]  ] | ||||||
|  | 
 | ||||||
|  |     sg.Window('Window Title', layout).read(close=True) | ||||||
|  | 
 | ||||||
|  |     # -------------------- Example 4 - Top align an entire row -------------------- | ||||||
|  |     # Note that the vtop function takes a row as input and returns a row.  DO NOT place [ ] around vtop | ||||||
|  |     # because it is a row already. | ||||||
|  |     layout = [ [sg.T('This layout uses the "vtop" layout helper function on 1 row')], | ||||||
|  |                sg.vtop([sg.Text('On row 1'), sg.Listbox(list(range(10)), size=(5,4)), sg.Text('On row 1')]), | ||||||
|  |                [sg.Button('OK')]  ] | ||||||
|  | 
 | ||||||
|  |     sg.Window('Window Title', layout).read(close=True) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     # -------------------- Example 5 - Use function to align all rows in layout -------------------- | ||||||
|  |     layout = [ [sg.T('This layout has all rows top aligned using function')], | ||||||
|  |                [sg.Text('On row 1'), sg.Listbox(list(range(10)), size=(5,4)), sg.Text('On row 1')], | ||||||
|  |                [sg.Text('On row 2'), sg.Listbox(list(range(10)), size=(5,4)), sg.Text('On row 2')], | ||||||
|  |                [sg.Button('OK')]  ] | ||||||
|  | 
 | ||||||
|  |     layout = top_align_layout(layout)       # pass in a layout, get a loyout back | ||||||
|  | 
 | ||||||
|  |     sg.Window('Window Title', layout).read(close=True) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | if __name__ == '__main__': | ||||||
|  |     main() | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue