Merge pull request #2471 from PySimpleGUI/Dev-latest

extend_layout method. _timeit decorator
This commit is contained in:
PySimpleGUI 2020-01-03 19:47:35 -05:00 committed by GitHub
commit d959f4ff27
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 41 additions and 2 deletions

View File

@ -125,6 +125,7 @@ from random import randint
import warnings import warnings
from math import floor from math import floor
from math import fabs from math import fabs
from functools import wraps
warnings.simplefilter('always', UserWarning) warnings.simplefilter('always', UserWarning)
@ -151,6 +152,23 @@ def TimerStop():
print((g_time_delta * 1000)) print((g_time_delta * 1000))
def _timeit(func):
"""
:param func: Decorated function
:return: Execution time for the decorated function
"""
@wraps(func)
def wrapper(*args, **kwargs):
start = time.time()
result = func(*args, **kwargs)
end = time.time()
print(f'{func.__name__} executed in {end - start:.4f} seconds')
return result
return wrapper
""" """
Welcome to the "core" PySimpleGUI code.... Welcome to the "core" PySimpleGUI code....
@ -5623,6 +5641,26 @@ class Window:
self._BuildKeyDict() self._BuildKeyDict()
return self return self
def extend_layout(self, container, rows):
"""
Adds new rows to an existing container element inside of this window
:param container: (Union[Frame, Column, Tab]) - The container Element the layout will be placed inside of
:param rows: (List[List[Element]]) - The layout to be added
:return: (Window) self so could be chained
"""
column = Column(rows, pad=(0,0))
if self == container:
frame = self.TKroot
else:
frame = container.Widget
PackFormIntoFrame(column, frame, self)
# sg.PackFormIntoFrame(col, window.TKroot, window)
self.AddRow(column)
self.AllKeysDict = self._BuildKeyDictForWindow(self, column, self.AllKeysDict)
return self
def LayoutAndRead(self, rows, non_blocking=False): def LayoutAndRead(self, rows, non_blocking=False):
""" """
Deprecated!! Now your layout your window's rows (layout) and then separately call Read. Deprecated!! Now your layout your window's rows (layout) and then separately call Read.
@ -5779,6 +5817,7 @@ class Window:
self.FormRemainedOpen = True self.FormRemainedOpen = True
self.TKroot.quit() # kick the users out of the mainloop self.TKroot.quit() # kick the users out of the mainloop
# @_timeit
def Read(self, timeout=None, timeout_key=TIMEOUT_KEY): def Read(self, timeout=None, timeout_key=TIMEOUT_KEY):
# type: (int, Any) -> Tuple[Any, Union[Dict, List]] # type: (int, Any) -> Tuple[Any, Union[Dict, List]]
""" """
@ -7863,7 +7902,7 @@ else:
# ======================== TK CODE STARTS HERE ========================================= # # ======================== TK CODE STARTS HERE ========================================= #
# @_timeit
def PackFormIntoFrame(form, containing_frame, toplevel_form): def PackFormIntoFrame(form, containing_frame, toplevel_form):
""" """
@ -12933,7 +12972,7 @@ def main():
] ]
frame3 = [ frame3 = [
[Checkbox('Checkbox1', True), Checkbox('Checkbox1')], [Checkbox('Checkbox1', True, ), Checkbox('Checkbox1')],
[Radio('Radio Button1', 1), Radio('Radio Button2', 1, default=True, tooltip='Radio 2')], [Radio('Radio Button1', 1), Radio('Radio Button2', 1, default=True, tooltip='Radio 2')],
[T('', size=(1, 4))], [T('', size=(1, 4))],
] ]