Frame support (but no label yet). Display Remi version in the main() teest harness
This commit is contained in:
		
							parent
							
								
									e469e67cca
								
							
						
					
					
						commit
						d77f660ac6
					
				
					 1 changed files with 60 additions and 13 deletions
				
			
		|  | @ -1,6 +1,6 @@ | ||||||
| #usr/bin/python3 | #usr/bin/python3 | ||||||
| 
 | 
 | ||||||
| version = __version__ = "0.38.0  Released 06-May-2020" | version = __version__ = "0.38.0.1  Unreleased\n Addition of Frame (but without a label)" | ||||||
| 
 | 
 | ||||||
| port = 'PySimpleGUIWeb' | port = 'PySimpleGUIWeb' | ||||||
| 
 | 
 | ||||||
|  | @ -19,6 +19,8 @@ import base64, binascii | ||||||
| import mimetypes | import mimetypes | ||||||
| from random import randint | from random import randint | ||||||
| import time | import time | ||||||
|  | import pkg_resources | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| # from typing import List, Any, Union, Tuple, Dict    # For doing types in comments. perhaps not required | # from typing import List, Any, Union, Tuple, Dict    # For doing types in comments. perhaps not required | ||||||
| 
 | 
 | ||||||
|  | @ -1908,6 +1910,22 @@ class Graph(Element): | ||||||
| # ---------------------------------------------------------------------- # | # ---------------------------------------------------------------------- # | ||||||
| #                           Frame                                        # | #                           Frame                                        # | ||||||
| # ---------------------------------------------------------------------- # | # ---------------------------------------------------------------------- # | ||||||
|  | 
 | ||||||
|  | # First the REMI implementation of a frame | ||||||
|  | 
 | ||||||
|  | class CLASSframe( remi.gui.VBox ): | ||||||
|  |     def __init__(self, title, *args, **kwargs): | ||||||
|  |         super( CLASSframe, self ).__init__(*args, **kwargs) | ||||||
|  |         self.style.update({"overflow":"visible","border-width":"1px","border-style":"solid","border-color":"#7d7d7d"}) | ||||||
|  |         self.frame_label = remi.gui.Label('frame label') | ||||||
|  |         self.frame_label.style.update({"position":"relative","overflow":"auto","background-color":"#ffffff","border-width":"1px","border-style":"solid","top":"-7px","width":"0px","height":"0px","left":"10px"}) | ||||||
|  |         self.append(self.frame_label,'frame_label') | ||||||
|  |         self.set_title(title) | ||||||
|  | 
 | ||||||
|  |     def set_title(self, title): | ||||||
|  |         self.frame_label.set_text(title) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| class Frame(Element): | class Frame(Element): | ||||||
|     def __init__(self, title, layout, title_color=None, background_color=None, title_location=None, |     def __init__(self, title, layout, title_color=None, background_color=None, title_location=None, | ||||||
|                  relief=DEFAULT_FRAME_RELIEF, element_justification='left', size=(None, None), font=None, pad=None, border_width=None, key=None, |                  relief=DEFAULT_FRAME_RELIEF, element_justification='left', size=(None, None), font=None, pad=None, border_width=None, key=None, | ||||||
|  | @ -1943,6 +1961,8 @@ class Frame(Element): | ||||||
|         self.BackgroundColor = background_color if background_color is not None else DEFAULT_BACKGROUND_COLOR |         self.BackgroundColor = background_color if background_color is not None else DEFAULT_BACKGROUND_COLOR | ||||||
|         self.Justification = 'left' |         self.Justification = 'left' | ||||||
|         self.ElementJustification = element_justification |         self.ElementJustification = element_justification | ||||||
|  |         self.Widget = None          # type: CLASSframe | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|         self.Layout(layout) |         self.Layout(layout) | ||||||
|  | @ -4146,6 +4166,9 @@ def AddMenuItem(top_menu, sub_menu_info, element, is_sub_menu=False, skip=False) | ||||||
| # ===================================== REMI CODE STARTS HERE ================================================ # | # ===================================== REMI CODE STARTS HERE ================================================ # | ||||||
| # ------------------------------------------------------------------------------------------------------------ # | # ------------------------------------------------------------------------------------------------------------ # | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| def PackFormIntoFrame(form, containing_frame, toplevel_form): | def PackFormIntoFrame(form, containing_frame, toplevel_form): | ||||||
|     def CharWidthInPixels(): |     def CharWidthInPixels(): | ||||||
|         return tkinter.font.Font().measure('A')  # single character width |         return tkinter.font.Font().measure('A')  # single character width | ||||||
|  | @ -4208,9 +4231,12 @@ def PackFormIntoFrame(form, containing_frame, toplevel_form): | ||||||
|         if form.ElementJustification.startswith('c'): |         if form.ElementJustification.startswith('c'): | ||||||
|             tk_row_frame.style['margin-left'] = 'auto' |             tk_row_frame.style['margin-left'] = 'auto' | ||||||
|             tk_row_frame.style['margin-right'] = 'auto' |             tk_row_frame.style['margin-right'] = 'auto' | ||||||
|  |             # tk_row_frame.style['justify-content'] = 'center' | ||||||
|         elif form.ElementJustification.startswith('r'): |         elif form.ElementJustification.startswith('r'): | ||||||
|  |             # tk_row_frame.style['justify-content'] = 'flex-end' | ||||||
|             tk_row_frame.style['margin-left'] = 'auto' |             tk_row_frame.style['margin-left'] = 'auto' | ||||||
|         else: |         else:       # everything else is left justified | ||||||
|  |             # tk_row_frame.style['justify-content'] = 'flex-flexstart' | ||||||
|             tk_row_frame.style['margin-right'] = 'auto' |             tk_row_frame.style['margin-right'] = 'auto' | ||||||
| 
 | 
 | ||||||
|         if form.BackgroundColor not in(None, COLOR_SYSTEM_DEFAULT): |         if form.BackgroundColor not in(None, COLOR_SYSTEM_DEFAULT): | ||||||
|  | @ -4757,20 +4783,28 @@ def PackFormIntoFrame(form, containing_frame, toplevel_form): | ||||||
| 
 | 
 | ||||||
|             # -------------------------  Frame element  ------------------------- # |             # -------------------------  Frame element  ------------------------- # | ||||||
|             elif element_type == ELEM_TYPE_FRAME: |             elif element_type == ELEM_TYPE_FRAME: | ||||||
|                 element = element  # type: Frame |                 element = element   # type: Frame | ||||||
|                 element.Widget = column_widget = remi.gui.VBox() |                 # element.Widget = column_widget = remi.gui.VBox() | ||||||
|                 if element.Justification.startswith('c'): |                 element.Widget = column_widget = CLASSframe(element.Title) | ||||||
|                     # print('CENTERING') |  | ||||||
|                     column_widget.style['align-items'] = 'center' |  | ||||||
|                     column_widget.style['justify-content'] = 'center' |  | ||||||
|                 else: |  | ||||||
|                     column_widget.style['justify-content'] = 'flex-start' |  | ||||||
|                     column_widget.style['align-items'] = 'baseline' |  | ||||||
|                 if element.BackgroundColor not in (None, COLOR_SYSTEM_DEFAULT): |                 if element.BackgroundColor not in (None, COLOR_SYSTEM_DEFAULT): | ||||||
|                     column_widget.style['background-color'] = element.BackgroundColor |                     column_widget.style['background-color'] = element.BackgroundColor | ||||||
|                 PackFormIntoFrame(element, column_widget, toplevel_form) |                 PackFormIntoFrame(element, column_widget, toplevel_form) | ||||||
|                 tk_row_frame.append(element.Widget) |                 tk_row_frame.append(element.Widget) | ||||||
| 
 | 
 | ||||||
|  |                 # | ||||||
|  |                 # element = element  # type: Frame | ||||||
|  |                 # element.Widget = column_widget = remi.gui.VBox() | ||||||
|  |                 # if element.Justification.startswith('c'): | ||||||
|  |                 #     column_widget.style['align-items'] = 'center' | ||||||
|  |                 #     column_widget.style['justify-content'] = 'center' | ||||||
|  |                 # else: | ||||||
|  |                 #     column_widget.style['justify-content'] = 'flex-start' | ||||||
|  |                 #     column_widget.style['align-items'] = 'baseline' | ||||||
|  |                 # if element.BackgroundColor not in (None, COLOR_SYSTEM_DEFAULT): | ||||||
|  |                 #     column_widget.style['background-color'] = element.BackgroundColor | ||||||
|  |                 # PackFormIntoFrame(element, column_widget, toplevel_form) | ||||||
|  |                 # tk_row_frame.append(element.Widget) | ||||||
|  | 
 | ||||||
|                 # labeled_frame = tk.LabelFrame(tk_row_frame, text=element.Title, relief=element.Relief) |                 # labeled_frame = tk.LabelFrame(tk_row_frame, text=element.Title, relief=element.Relief) | ||||||
|                 # PackFormIntoFrame(element, labeled_frame, toplevel_form) |                 # PackFormIntoFrame(element, labeled_frame, toplevel_form) | ||||||
|                 # labeled_frame.pack(side=tk.LEFT, padx=element.Pad[0], pady=element.Pad[1]) |                 # labeled_frame.pack(side=tk.LEFT, padx=element.Pad[0], pady=element.Pad[1]) | ||||||
|  | @ -7916,6 +7950,15 @@ def main(): | ||||||
|     #            FolderBrowse()], |     #            FolderBrowse()], | ||||||
|     #           [Text('Destination Folder', justification='right', size=(40,1)), InputText('Dest'), FolderBrowse()], |     #           [Text('Destination Folder', justification='right', size=(40,1)), InputText('Dest'), FolderBrowse()], | ||||||
|     #           [Ok(), Cancel(disabled=True), Exit(tooltip='Exit button'), Button('Hidden Button', visible=False)]] |     #           [Ok(), Cancel(disabled=True), Exit(tooltip='Exit button'), Button('Hidden Button', visible=False)]] | ||||||
|  |     try: | ||||||
|  |         ver = version[:version.index('\n')] | ||||||
|  |     except: | ||||||
|  |         ver = version | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     def VerLine(version, description, size=(30,1)): | ||||||
|  |         return [Column([[T(description, font='Courier 18', text_color='yellow')], [T(version, font='Courier 18', size=size)]])] | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
|     menu_def = [['&File', ['&Open', '&Save', 'E&xit', 'Properties']], |     menu_def = [['&File', ['&Open', '&Save', 'E&xit', 'Properties']], | ||||||
|                 ['&Edit', ['Paste', ['Special', 'Normal', ], '!Undo'], ], |                 ['&Edit', ['Paste', ['Special', 'Normal', ], '!Undo'], ], | ||||||
|  | @ -7933,12 +7976,16 @@ def main(): | ||||||
|     layout = [ |     layout = [ | ||||||
|         [Menu(menu_def, key='_MENU_', text_color='yellow', background_color='#475841',  font='Courier 14')], |         [Menu(menu_def, key='_MENU_', text_color='yellow', background_color='#475841',  font='Courier 14')], | ||||||
|         # [T('123435', size=(1,8))], |         # [T('123435', size=(1,8))], | ||||||
|         [Text('PySimpleGUIWeb Welcomes You...', tooltip='text', font=('Comic sans ms', 20),size=(40,1), text_color='red', enable_events=False, key='_PySimpleGUIWeb_')], |         [Text('PySimpleGUIWeb Welcomes You...', tooltip='text', font=('Comic sans ms', 20),size=(40,1), text_color='yellow', enable_events=False, key='_PySimpleGUIWeb_')], | ||||||
|         # [OptionMenu([])], |         # [OptionMenu([])], | ||||||
|         [T('System platform = %s'%sys.platform)], |         [T('System platform = %s'%sys.platform)], | ||||||
|         [Image(data=DEFAULT_BASE64_ICON, enable_events=False)], |         [Image(data=DEFAULT_BASE64_ICON, enable_events=False)], | ||||||
|         # [Image(filename=r'C:\Python\PycharmProjects\GooeyGUI\logo500.png', key='-IMAGE-')], |         # [Image(filename=r'C:\Python\PycharmProjects\GooeyGUI\logo500.png', key='-IMAGE-')], | ||||||
|         [Text('VERSION {}'.format(version), text_color='red', font='Courier 24')], |         VerLine(ver, 'PySimpleGUI Version'), | ||||||
|  |         VerLine(os.path.dirname(os.path.abspath(__file__)), 'PySimpleGUI Location'), | ||||||
|  |         VerLine(sys.version, 'Python Version', size=(60,2)), | ||||||
|  |         VerLine(pkg_resources.get_distribution("remi").version, 'Remi Version'), | ||||||
|  |         # [Text('VERSION {}'.format(version), text_color='red', font='Courier 24')], | ||||||
|         [T('Current Time '), Text('Text', key='_TEXT_', font='Arial 18', text_color='black', size=(30,1)), Column(col1, background_color='red')], |         [T('Current Time '), Text('Text', key='_TEXT_', font='Arial 18', text_color='black', size=(30,1)), Column(col1, background_color='red')], | ||||||
|         [T('Up Time'), Text('Text', key='_TEXT_UPTIME_', font='Arial 18', text_color='black', size=(30,1))], |         [T('Up Time'), Text('Text', key='_TEXT_UPTIME_', font='Arial 18', text_color='black', size=(30,1))], | ||||||
|         [Input('Single Line Input', do_not_clear=True, enable_events=False, size=(30, 1), text_color='red', key='_IN_')], |         [Input('Single Line Input', do_not_clear=True, enable_events=False, size=(30, 1), text_color='red', key='_IN_')], | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue