More docstring fixes. no_titlebar parameter for one_line_progress_meter, renamed demo file

This commit is contained in:
PySimpleGUI 2020-03-23 23:17:04 -04:00
parent b21de56c99
commit d480899721
2 changed files with 124 additions and 76 deletions

View File

@ -222,7 +222,8 @@ def _timeit_summary(func):
Code I write now, outside PySimpleGUI, IS PEP8 compliant. Code I write now, outside PySimpleGUI, IS PEP8 compliant.
The variable and function naming in particular are not compliant. There is The variable and function naming in particular are not compliant. There is
liberal use of CamelVariableAndFunctionNames. If you've got a serious enough problem with this liberal use of CamelVariableAndFunctionNames, but for anything externally facing, there are aliases
available for all functions. If you've got a serious enough problem with 100% PEP8 compliance
that you'll pass on this package, then that's your right and I invite you to do so. However, if that you'll pass on this package, then that's your right and I invite you to do so. However, if
perhaps you're a practical thinker where it's the results that matter, then you'll have no perhaps you're a practical thinker where it's the results that matter, then you'll have no
trouble with this code base. There is consisency however. trouble with this code base. There is consisency however.
@ -596,7 +597,7 @@ class Element():
:param key: Identifies an Element. Should be UNIQUE to this window. :param key: Identifies an Element. Should be UNIQUE to this window.
:type key: (Any) :type key: (Any)
:param pad: Amount of padding to put around element in pixels (left/right, top/bottom) :param pad: Amount of padding to put around element in pixels (left/right, top/bottom)
:type pad: (int, int) or ((int,int),(int,int)) :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int)
:param tooltip: text, that will appear when mouse hovers over the element :param tooltip: text, that will appear when mouse hovers over the element
:type tooltip: (str) :type tooltip: (str)
:param visible: set visibility state of the element (Default = True) :param visible: set visibility state of the element (Default = True)
@ -1052,7 +1053,7 @@ class InputText(Element):
:param focus: Determines if initial focus should go to this element. :param focus: Determines if initial focus should go to this element.
:type focus: (bool) :type focus: (bool)
:param pad: . Amount of padding to put around element. Normally (horizontal pixels, vertical pixels) but can be split apart further into ((horizontal left, horizontal right), (vertical above, vertical below)) :param pad: . Amount of padding to put around element. Normally (horizontal pixels, vertical pixels) but can be split apart further into ((horizontal left, horizontal right), (vertical above, vertical below))
:type pad: (int, int) or ((int, int), (int, int)) Tuple(s) :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int)
:param use_readonly_for_disable: If True (the default) tkinter state set to 'readonly'. Otherwise state set to 'disabled' :param use_readonly_for_disable: If True (the default) tkinter state set to 'readonly'. Otherwise state set to 'disabled'
:type use_readonly_for_disable: (bool) :type use_readonly_for_disable: (bool)
:param right_click_menu: A list of lists of Menu items to show when this element is right clicked. See user docs for exact format. :param right_click_menu: A list of lists of Menu items to show when this element is right clicked. See user docs for exact format.
@ -1182,7 +1183,7 @@ class Combo(Element):
:para key: Used with window.FindElement and with return values to uniquely identify this element :para key: Used with window.FindElement and with return values to uniquely identify this element
:type key: (Any) :type key: (Any)
:param: Amount of padding to put around element (left/right, top/bottom) or ((left, right), (top, bottom)) :param: Amount of padding to put around element (left/right, top/bottom) or ((left, right), (top, bottom))
:type pad: (int, int) or ((int, int),(int,int)) :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int)
:para tooltip: text that will appear when mouse hovers over this element :para tooltip: text that will appear when mouse hovers over this element
:type tooltip: (str) :type tooltip: (str)
:par readonly: make element readonly (user can't change). True means user cannot change :par readonly: make element readonly (user can't change). True means user cannot change
@ -1331,7 +1332,7 @@ class OptionMenu(Element):
:param key: Used with window.FindElement and with return values to uniquely identify this element :param key: Used with window.FindElement and with return values to uniquely identify this element
:type key: (Any) :type key: (Any)
:param pad: Amount of padding to put around element (left/right, top/bottom) or ((left, right), (top, bottom)) :param pad: Amount of padding to put around element (left/right, top/bottom) or ((left, right), (top, bottom))
:type pad: (int, int) or ((int, int),(int,int)) :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int)
:param tooltip: (str) text that will appear when mouse hovers over this element :param tooltip: (str) text that will appear when mouse hovers over this element
:type tooltip: (str) :type tooltip: (str)
:param visible: (bool) set visibility state of the element :param visible: (bool) set visibility state of the element
@ -1441,7 +1442,7 @@ class Listbox(Element):
:param key: Used with window.FindElement and with return values to uniquely identify this element :param key: Used with window.FindElement and with return values to uniquely identify this element
:type key: (Any) :type key: (Any)
:param pad: Amount of padding to put around element (left/right, top/bottom) or ((left, right), (top, bottom)) :param pad: Amount of padding to put around element (left/right, top/bottom) or ((left, right), (top, bottom))
:type pad: (int, int) or ((int, int),(int,int)) :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int)
:param tooltip: text, that will appear when mouse hovers over the element :param tooltip: text, that will appear when mouse hovers over the element
:type tooltip: (str) :type tooltip: (str)
:param right_click_menu: A list of lists of Menu items to show when this element is right clicked. See user docs for exact format. :param right_click_menu: A list of lists of Menu items to show when this element is right clicked. See user docs for exact format.
@ -1636,7 +1637,7 @@ class Radio(Element):
:param key: Used with window.FindElement and with return values to uniquely identify this element :param key: Used with window.FindElement and with return values to uniquely identify this element
:type key: (Any) :type key: (Any)
:param pad: Amount of padding to put around element (left/right, top/bottom) or ((left, right), (top, bottom)) :param pad: Amount of padding to put around element (left/right, top/bottom) or ((left, right), (top, bottom))
:type pad: (int, int) or ((int, int),(int,int)) :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int)
:param tooltip: text, that will appear when mouse hovers over the element :param tooltip: text, that will appear when mouse hovers over the element
:type tooltip: (str) :type tooltip: (str)
:param change_submits: DO NOT USE. Only listed for backwards compat - Use enable_events instead :param change_submits: DO NOT USE. Only listed for backwards compat - Use enable_events instead
@ -1766,7 +1767,7 @@ class Checkbox(Element):
:param key: Used with window.FindElement and with return values to uniquely identify this element :param key: Used with window.FindElement and with return values to uniquely identify this element
:type key: (Any) :type key: (Any)
:param pad: Amount of padding to put around element (left/right, top/bottom) or ((left, right), (top, bottom)) :param pad: Amount of padding to put around element (left/right, top/bottom) or ((left, right), (top, bottom))
:type pad: (int, int) or ((int, int),(int,int)) :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int)
:param tooltip: text, that will appear when mouse hovers over the element :param tooltip: text, that will appear when mouse hovers over the element
:type tooltip: (str) :type tooltip: (str)
:param visible: set visibility state of the element :param visible: set visibility state of the element
@ -1917,7 +1918,7 @@ class Spin(Element):
:param key: Used with window.FindElement and with return values to uniquely identify this element :param key: Used with window.FindElement and with return values to uniquely identify this element
:type key: (Any) :type key: (Any)
:param pad: Amount of padding to put around element (left/right, top/bottom) or ((left, right), (top, bottom)) :param pad: Amount of padding to put around element (left/right, top/bottom) or ((left, right), (top, bottom))
:type pad: (int, int) or ((int, int),(int,int)) :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int)
:param tooltip: text, that will appear when mouse hovers over the element :param tooltip: text, that will appear when mouse hovers over the element
:type tooltip: (str) :type tooltip: (str)
:param visible: set visibility state of the element :param visible: set visibility state of the element
@ -2054,7 +2055,7 @@ class Multiline(Element):
:param font: specifies the font family, size, etc :param font: specifies the font family, size, etc
:type font: Union[str, Tuple[str, int]] :type font: Union[str, Tuple[str, int]]
:param pad: Amount of padding to put around element (left/right, top/bottom) or ((left, right), (top, bottom)) :param pad: Amount of padding to put around element (left/right, top/bottom) or ((left, right), (top, bottom))
:type pad: (int, int) or ((int, int),(int,int)) :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int)
:param tooltip: text, that will appear when mouse hovers over the element :param tooltip: text, that will appear when mouse hovers over the element
:type tooltip: (str) :type tooltip: (str)
:param right_click_menu: A list of lists of Menu items to show when this element is right clicked. See user docs for exact format. :param right_click_menu: A list of lists of Menu items to show when this element is right clicked. See user docs for exact format.
@ -2224,7 +2225,7 @@ class Text(Element):
:param justification: how string should be aligned within space provided by size. Valid choices = `left`, `right`, `center` :param justification: how string should be aligned within space provided by size. Valid choices = `left`, `right`, `center`
:type justification: (str) :type justification: (str)
:param pad: Amount of padding to put around element (left/right, top/bottom) or ((left, right), (top, bottom)) :param pad: Amount of padding to put around element (left/right, top/bottom) or ((left, right), (top, bottom))
:type pad: (int, int) or ((int, int),(int,int)) :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int)
:param key: Used with window.FindElement and with return values to uniquely identify this element to uniquely identify this element :param key: Used with window.FindElement and with return values to uniquely identify this element to uniquely identify this element
:type key: (Any) :type key: (Any)
:param right_click_menu: A list of lists of Menu items to show when this element is right clicked. See user docs for exact format. :param right_click_menu: A list of lists of Menu items to show when this element is right clicked. See user docs for exact format.
@ -2329,7 +2330,7 @@ class StatusBar(Element):
:param justification: how string should be aligned within space provided by size. Valid choices = `left`, `right`, `center` :param justification: how string should be aligned within space provided by size. Valid choices = `left`, `right`, `center`
:type justification: (str) :type justification: (str)
:param pad: Amount of padding to put around element (left/right, top/bottom) or ((left, right), (top, bottom)) :param pad: Amount of padding to put around element (left/right, top/bottom) or ((left, right), (top, bottom))
:type pad: (int, int) or ((int, int),(int,int)) :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int)
:param key: Used with window.FindElement and with return values to uniquely identify this element to uniquely identify this element :param key: Used with window.FindElement and with return values to uniquely identify this element to uniquely identify this element
:type key: (Any) :type key: (Any)
:param tooltip: text, that will appear when mouse hovers over the element :param tooltip: text, that will appear when mouse hovers over the element
@ -2511,7 +2512,7 @@ class TKOutput(tk.Frame):
:param font: specifies the font family, size, etc :param font: specifies the font family, size, etc
:type font: Union[str, Tuple[str, int]] :type font: Union[str, Tuple[str, int]]
:param pad: Amount of padding to put around element (left/right, top/bottom) or ((left, right), (top, bottom)) :param pad: Amount of padding to put around element (left/right, top/bottom) or ((left, right), (top, bottom))
:type pad: (int, int) or ((int, int),(int,int)) :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int)
""" """
self.frame = tk.Frame(parent) self.frame = tk.Frame(parent)
tk.Frame.__init__(self, self.frame) tk.Frame.__init__(self, self.frame)
@ -2587,7 +2588,7 @@ class Output(Element):
:param text_color: color of the text :param text_color: color of the text
:type text_color: (str) :type text_color: (str)
:param pad: Amount of padding to put around element (left/right, top/bottom) or ((left, right), (top, bottom)) :param pad: Amount of padding to put around element (left/right, top/bottom) or ((left, right), (top, bottom))
:type pad: (int, int) or ((int, int),(int,int)) :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int)
:param font: specifies the font family, size, etc :param font: specifies the font family, size, etc
:type font: Union[str, Tuple[str, int]] :type font: Union[str, Tuple[str, int]]
:param tooltip: text, that will appear when mouse hovers over the element :param tooltip: text, that will appear when mouse hovers over the element
@ -2612,6 +2613,12 @@ class Output(Element):
@property @property
def TKOut(self): def TKOut(self):
"""
Returns the TKOutput object used to create the element
:return: The TKOutput object
:rtype: (TKOutput)
"""
if self._TKOut is None: if self._TKOut is None:
print('*** Did you forget to call Finalize()? Your code should look something like: ***') print('*** Did you forget to call Finalize()? Your code should look something like: ***')
print('*** form = sg.Window("My Form").Layout(layout).Finalize() ***') print('*** form = sg.Window("My Form").Layout(layout).Finalize() ***')
@ -2645,7 +2652,7 @@ class Output(Element):
""" """
return self._TKOut.output.get(1.0, tk.END) return self._TKOut.output.get(1.0, tk.END)
def expand(self, expand_x=False, expand_y=False): def expand(self, expand_x=False, expand_y=False, expand_row=True):
""" """
Causes the Element to expand to fill available space in the X and Y directions. Can specify which or both directions Causes the Element to expand to fill available space in the X and Y directions. Can specify which or both directions
@ -2666,7 +2673,7 @@ class Output(Element):
self._TKOut.output.pack(expand=True, fill=fill) self._TKOut.output.pack(expand=True, fill=fill)
self._TKOut.frame.pack(expand=True, fill=fill) self._TKOut.frame.pack(expand=True, fill=fill)
self.ParentRowFrame.pack(expand=True, fill=fill) self.ParentRowFrame.pack(expand=expand_row, fill=fill)
def __del__(self): def __del__(self):
""" """
@ -2741,7 +2748,7 @@ class Button(Element):
:param focus: if True, initial focus will be put on this button :param focus: if True, initial focus will be put on this button
:type focus: (bool) :type focus: (bool)
:param pad: Amount of padding to put around element (left/right, top/bottom) or ((left, right), (top, bottom)) :param pad: Amount of padding to put around element (left/right, top/bottom) or ((left, right), (top, bottom))
:type pad: (int, int) or ((int, int),(int,int)) :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int)
:param key: Used with window.FindElement and with return values to uniquely identify this element to uniquely identify this element :param key: Used with window.FindElement and with return values to uniquely identify this element to uniquely identify this element
:type key: (Any) :type key: (Any)
:param visible: set visibility state of the element :param visible: set visibility state of the element
@ -3111,7 +3118,7 @@ class ButtonMenu(Element):
:param font: specifies the font family, size, etc :param font: specifies the font family, size, etc
:type font: Union[str, Tuple[str, int]] :type font: Union[str, Tuple[str, int]]
:param pad: Amount of padding to put around element (left/right, top/bottom) or ((left, right), (top, bottom)) :param pad: Amount of padding to put around element (left/right, top/bottom) or ((left, right), (top, bottom))
:type pad: (int, int) or ((int, int),(int,int)) :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int)
:param key: Used with window.FindElement and with return values to uniquely identify this element to uniquely identify this element :param key: Used with window.FindElement and with return values to uniquely identify this element to uniquely identify this element
:type key: (Any) :type key: (Any)
:param tearoff: Determines if menus should allow them to be torn off :param tearoff: Determines if menus should allow them to be torn off
@ -3230,7 +3237,7 @@ class ProgressBar(Element):
:param key: Used with window.FindElement and with return values to uniquely identify this element to uniquely identify this element :param key: Used with window.FindElement and with return values to uniquely identify this element to uniquely identify this element
:type key: (Any) :type key: (Any)
:param pad: Amount of padding to put around element (left/right, top/bottom) or ((left, right), (top, bottom)) :param pad: Amount of padding to put around element (left/right, top/bottom) or ((left, right), (top, bottom))
:type pad: (int, int) or ((int, int),(int,int)) :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int)
:param visible: set visibility state of the element :param visible: set visibility state of the element
:type visible: (bool) :type visible: (bool)
:param metadata: User metadata that can be set to ANYTHING :param metadata: User metadata that can be set to ANYTHING
@ -3317,7 +3324,7 @@ class Image(Element):
:param size: (width, height) size of image in pixels :param size: (width, height) size of image in pixels
:type size: Tuple[int, int] :type size: Tuple[int, int]
:param pad: Amount of padding to put around element (left/right, top/bottom) or ((left, right), (top, bottom)) :param pad: Amount of padding to put around element (left/right, top/bottom) or ((left, right), (top, bottom))
:type pad: (int, int) or ((int, int),(int,int)) :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int)
:param key: Used with window.FindElement and with return values to uniquely identify this element to uniquely identify this element :param key: Used with window.FindElement and with return values to uniquely identify this element to uniquely identify this element
:type key: (Any) :type key: (Any)
:param tooltip: text, that will appear when mouse hovers over the element :param tooltip: text, that will appear when mouse hovers over the element
@ -3515,7 +3522,7 @@ class Canvas(Element):
:param size: (width in char, height in rows) size in pixels to make canvas :param size: (width in char, height in rows) size in pixels to make canvas
:type size: Tuple[int,int] :type size: Tuple[int,int]
:param pad: Amount of padding to put around element :param pad: Amount of padding to put around element
:type pad: int :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int)
:param key: Used with window.FindElement and with return values to uniquely identify this element :param key: Used with window.FindElement and with return values to uniquely identify this element
:type key: (Any) :type key: (Any)
:param tooltip: text, that will appear when mouse hovers over the element :param tooltip: text, that will appear when mouse hovers over the element
@ -3538,6 +3545,12 @@ class Canvas(Element):
@property @property
def TKCanvas(self): def TKCanvas(self):
"""
Returns the underlying tkiner Canvas widget
:return: The tkinter canvas widget
:rtype: (tk.Canvas)
"""
if self._TKCanvas is None: if self._TKCanvas is None:
print('*** Did you forget to call Finalize()? Your code should look something like: ***') print('*** Did you forget to call Finalize()? Your code should look something like: ***')
print('*** window = sg.Window("My Form", layout, finalize=True) ***') print('*** window = sg.Window("My Form", layout, finalize=True) ***')
@ -3577,7 +3590,7 @@ class Graph(Element):
:param background_color: background color of the drawing area :param background_color: background color of the drawing area
:type background_color: (str) :type background_color: (str)
:param pad: Amount of padding to put around element (left/right, top/bottom) or ((left, right), (top, bottom)) :param pad: Amount of padding to put around element (left/right, top/bottom) or ((left, right), (top, bottom))
:type pad: (int, int) or ((int, int),(int,int)) :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int)
:param change_submits: * DEPRICATED DO NOT USE! Same as enable_events :param change_submits: * DEPRICATED DO NOT USE! Same as enable_events
:type change_submits: (bool) :type change_submits: (bool)
:param drag_submits: if True and Events are enabled for the Graph, will report Events any time the mouse moves while button down :param drag_submits: if True and Events are enabled for the Graph, will report Events any time the mouse moves while button down
@ -3627,8 +3640,12 @@ class Graph(Element):
""" """
if None in (x_in, y_in): if None in (x_in, y_in):
return None, None return None, None
scale_x = (self.CanvasSize[0] - 0) / (self.TopRight[0] - self.BottomLeft[0]) try:
scale_y = (0 - self.CanvasSize[1]) / (self.TopRight[1] - self.BottomLeft[1]) scale_x = (self.CanvasSize[0] - 0) / (self.TopRight[0] - self.BottomLeft[0])
scale_y = (0 - self.CanvasSize[1]) / (self.TopRight[1] - self.BottomLeft[1])
except:
scale_x = scale_y = 0
new_x = 0 + scale_x * (x_in - self.BottomLeft[0]) new_x = 0 + scale_x * (x_in - self.BottomLeft[0])
new_y = self.CanvasSize[1] + scale_y * (y_in - self.BottomLeft[1]) new_y = self.CanvasSize[1] + scale_y * (y_in - self.BottomLeft[1])
return new_x, new_y return new_x, new_y
@ -4130,6 +4147,12 @@ class Graph(Element):
@property @property
def TKCanvas(self): def TKCanvas(self):
"""
Returns the underlying tkiner Canvas widget
:return: The tkinter canvas widget
:rtype: (tk.Canvas)
"""
if self._TKCanvas2 is None: if self._TKCanvas2 is None:
print('*** Did you forget to call Finalize()? Your code should look something like: ***') print('*** Did you forget to call Finalize()? Your code should look something like: ***')
print('*** form = sg.Window("My Form").Layout(layout).Finalize() ***') print('*** form = sg.Window("My Form").Layout(layout).Finalize() ***')
@ -4249,7 +4272,7 @@ class Frame(Element):
:param font: specifies the font family, size, etc :param font: specifies the font family, size, etc
:type font: Union[str, Tuple[str, int]] :type font: Union[str, Tuple[str, int]]
:param pad: Amount of padding to put around element (left/right, top/bottom) or ((left, right), (top, bottom)) :param pad: Amount of padding to put around element (left/right, top/bottom) or ((left, right), (top, bottom))
:type pad: (int, int) or ((int, int),(int,int)) :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int)
:param border_width: width of border around element in pixels :param border_width: width of border around element in pixels
:type border_width: (int) :type border_width: (int)
:param key: Value that uniquely identifies this element from all other elements. Used when Finding an element or in return values. Must be unique to the window :param key: Value that uniquely identifies this element from all other elements. Used when Finding an element or in return values. Must be unique to the window
@ -4417,7 +4440,7 @@ class VerticalSeparator(Element):
def __init__(self, pad=None): def __init__(self, pad=None):
""" """
:param pad: Amount of padding to put around element (left/right, top/bottom) or ((left, right), (top, bottom)) :param pad: Amount of padding to put around element (left/right, top/bottom) or ((left, right), (top, bottom))
:type pad: (int, int) or ((int, int),(int,int)) :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int)
""" """
self.Orientation = 'vertical' # for now only vertical works self.Orientation = 'vertical' # for now only vertical works
@ -4455,7 +4478,7 @@ class Tab(Element):
:param font: specifies the font family, size, etc :param font: specifies the font family, size, etc
:type font: Union[str, Tuple[str, int]] :type font: Union[str, Tuple[str, int]]
:param pad: Amount of padding to put around element (left/right, top/bottom) or ((left, right), (top, bottom)) :param pad: Amount of padding to put around element (left/right, top/bottom) or ((left, right), (top, bottom))
:type pad: (int, int) or ((int, int),(int,int)) :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int)
:param disabled: If True button will be created disabled :param disabled: If True button will be created disabled
:type disabled: (bool) :type disabled: (bool)
:param border_width: width of border around element in pixels :param border_width: width of border around element in pixels
@ -4663,7 +4686,7 @@ class TabGroup(Element):
:param enable_events: If True then switching tabs will generate an Event :param enable_events: If True then switching tabs will generate an Event
:type enable_events: (bool) :type enable_events: (bool)
:param pad: Amount of padding to put around element (left/right, top/bottom) or ((left, right), (top, bottom)) :param pad: Amount of padding to put around element (left/right, top/bottom) or ((left, right), (top, bottom))
:type pad: (int, int) or ((int, int),(int,int)) :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int)
:param border_width: width of border around element in pixels :param border_width: width of border around element in pixels
:type border_width: (int) :type border_width: (int)
:param theme: DEPRICATED - You can only specify themes using set options or when window is created. It's not possible to do it on an element basis :param theme: DEPRICATED - You can only specify themes using set options or when window is created. It's not possible to do it on an element basis
@ -4882,7 +4905,7 @@ class Slider(Element):
:param key: Value that uniquely identifies this element from all other elements. Used when Finding an element or in return values. Must be unique to the window :param key: Value that uniquely identifies this element from all other elements. Used when Finding an element or in return values. Must be unique to the window
:type key: (any) :type key: (any)
:param pad: Amount of padding to put around element (left/right, top/bottom) or ((left, right), (top, bottom)) :param pad: Amount of padding to put around element (left/right, top/bottom) or ((left, right), (top, bottom))
:type pad: (int, int) or ((int, int),(int,int)) :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int)
:param tooltip: text, that will appear when mouse hovers over the element :param tooltip: text, that will appear when mouse hovers over the element
:type tooltip: (str) :type tooltip: (str)
:param visible: set visibility state of the element :param visible: set visibility state of the element
@ -5106,7 +5129,7 @@ class Column(Element):
:param size: (width, height) size in pixels (doesn't work quite right, sometimes only 1 dimension is set by tkinter :param size: (width, height) size in pixels (doesn't work quite right, sometimes only 1 dimension is set by tkinter
:type size: Tuple[int, int] :type size: Tuple[int, int]
:param pad: Amount of padding to put around element (left/right, top/bottom) or ((left, right), (top, bottom)) :param pad: Amount of padding to put around element (left/right, top/bottom) or ((left, right), (top, bottom))
:type pad: (int, int) or ((int, int),(int,int)) :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int)
:param scrollable: if True then scrollbars will be added to the column :param scrollable: if True then scrollbars will be added to the column
:type scrollable: (bool) :type scrollable: (bool)
:param vertical_scroll_only: if Truen then no horizontal scrollbar will be shown :param vertical_scroll_only: if Truen then no horizontal scrollbar will be shown
@ -5285,7 +5308,7 @@ class Pane(Element):
:param size: (width, height) w=characters-wide, h=rows-high How much room to reserve for the Pane :param size: (width, height) w=characters-wide, h=rows-high How much room to reserve for the Pane
:type size: Tuple[int, int] :type size: Tuple[int, int]
:param pad: Amount of padding to put around element (left/right, top/bottom) or ((left, right), (top, bottom)) :param pad: Amount of padding to put around element (left/right, top/bottom) or ((left, right), (top, bottom))
:type pad: (int, int) or ((int, int),(int,int)) :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int)
:param orientation: 'horizontal' or 'vertical' or ('h' or 'v'). Direction the Pane should slide :param orientation: 'horizontal' or 'vertical' or ('h' or 'v'). Direction the Pane should slide
:type orientation: (str) :type orientation: (str)
:param show_handle: if True, the handle is drawn that makes it easier to grab and slide :param show_handle: if True, the handle is drawn that makes it easier to grab and slide
@ -5602,7 +5625,7 @@ class Menu(Element):
:param tearoff: if True, then can tear the menu off from the window ans use as a floating window. Very cool effect :param tearoff: if True, then can tear the menu off from the window ans use as a floating window. Very cool effect
:type tearoff: (bool) :type tearoff: (bool)
:param pad: Amount of padding to put around element (left/right, top/bottom) or ((left, right), (top, bottom)) :param pad: Amount of padding to put around element (left/right, top/bottom) or ((left, right), (top, bottom))
:type pad: (int, int) or ((int, int),(int,int)) :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int)
:param key: Value that uniquely identifies this element from all other elements. Used when Finding an element or in return values. Must be unique to the window :param key: Value that uniquely identifies this element from all other elements. Used when Finding an element or in return values. Must be unique to the window
:type key: (any) :type key: (any)
:param visible: set visibility state of the element :param visible: set visibility state of the element
@ -5746,7 +5769,7 @@ class Table(Element):
:param bind_return_key: if True, pressing return key will cause event coming from Table, ALSO a left button double click will generate an event if this parameter is True :param bind_return_key: if True, pressing return key will cause event coming from Table, ALSO a left button double click will generate an event if this parameter is True
:type bind_return_key: (bool) :type bind_return_key: (bool)
:param pad: Amount of padding to put around element (left/right, top/bottom) or ((left, right), (top, bottom)) :param pad: Amount of padding to put around element (left/right, top/bottom) or ((left, right), (top, bottom))
:type pad: (int, int) or ((int, int),(int,int)) :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int)
:param key: Used with window.FindElement and with return values to uniquely identify this element to uniquely identify this element :param key: Used with window.FindElement and with return values to uniquely identify this element to uniquely identify this element
:type key: (Any) :type key: (Any)
:param tooltip: text, that will appear when mouse hovers over the element :param tooltip: text, that will appear when mouse hovers over the element
@ -5978,7 +6001,7 @@ class Tree(Element):
:param row_height: height of a single row in pixels :param row_height: height of a single row in pixels
:type row_height: (int) :type row_height: (int)
:param pad: Amount of padding to put around element (left/right, top/bottom) or ((left, right), (top, bottom)) :param pad: Amount of padding to put around element (left/right, top/bottom) or ((left, right), (top, bottom))
:type pad: (int, int) or ((int, int),(int,int)) :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int)
:param key: Used with window.FindElement and with return values to uniquely identify this element to uniquely identify this element :param key: Used with window.FindElement and with return values to uniquely identify this element to uniquely identify this element
:type key: (Any) :type key: (Any)
:param tooltip: text, that will appear when mouse hovers over the element :param tooltip: text, that will appear when mouse hovers over the element
@ -8151,7 +8174,7 @@ def FileBrowse(button_text='Browse', target=(ThisRow, -1), file_types=(("ALL Fil
:param disabled: set disable state for element (Default = False) :param disabled: set disable state for element (Default = False)
:type disabled: (bool) :type disabled: (bool)
:param pad: Amount of padding to put around element in pixels (left/right, top/bottom) :param pad: Amount of padding to put around element in pixels (left/right, top/bottom)
:type pad: (int, int) or ((int,int),(int,int)) :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int)
:param key: key for uniquely identify this element (for window.FindElement) :param key: key for uniquely identify this element (for window.FindElement)
:type key: Union[str, int, tuple] :type key: Union[str, int, tuple]
:return: returns a button :return: returns a button
@ -8191,7 +8214,7 @@ def FilesBrowse(button_text='Browse', target=(ThisRow, -1), file_types=(("ALL Fi
:param font: specifies the font family, size, etc :param font: specifies the font family, size, etc
:type font: Union[str, Tuple[str, int]] :type font: Union[str, Tuple[str, int]]
:param pad: Amount of padding to put around element in pixels (left/right, top/bottom) :param pad: Amount of padding to put around element in pixels (left/right, top/bottom)
:type pad: (int, int) or ((int,int),(int,int)) :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int)
:param key: key for uniquely identify this element (for window.FindElement) :param key: key for uniquely identify this element (for window.FindElement)
:type key: Union[str, int, tuple] :type key: Union[str, int, tuple]
:return: returns a button :return: returns a button
@ -8229,7 +8252,7 @@ def FileSaveAs(button_text='Save As...', target=(ThisRow, -1), file_types=(("ALL
:param font: specifies the font family, size, etc :param font: specifies the font family, size, etc
:type font: Union[str, Tuple[str, int]] :type font: Union[str, Tuple[str, int]]
:param pad: Amount of padding to put around element in pixels (left/right, top/bottom) :param pad: Amount of padding to put around element in pixels (left/right, top/bottom)
:type pad: (int, int) or ((int,int),(int,int)) :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int)
:param key: key for uniquely identify this element (for window.FindElement) :param key: key for uniquely identify this element (for window.FindElement)
:type key: Union[str, int, tuple] :type key: Union[str, int, tuple]
:return: returns a button :return: returns a button
@ -8267,7 +8290,7 @@ def SaveAs(button_text='Save As...', target=(ThisRow, -1), file_types=(("ALL Fil
:param font: specifies the font family, size, etc :param font: specifies the font family, size, etc
:type font: Union[str, Tuple[str, int]] :type font: Union[str, Tuple[str, int]]
:param pad: Amount of padding to put around element in pixels (left/right, top/bottom) :param pad: Amount of padding to put around element in pixels (left/right, top/bottom)
:type pad: (int, int) or ((int,int),(int,int)) :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int)
:param key: key for uniquely identify this element (for window.FindElement) :param key: key for uniquely identify this element (for window.FindElement)
:type key: Union[str, int, tuple] :type key: Union[str, int, tuple]
:return: returns a button :return: returns a button
@ -8300,7 +8323,7 @@ def Save(button_text='Save', size=(None, None), auto_size_button=None, button_co
:type font: Union[str, Tuple[str, int]] :type font: Union[str, Tuple[str, int]]
:param focus: if focus should be set to this :param focus: if focus should be set to this
:param pad: Amount of padding to put around element in pixels (left/right, top/bottom) :param pad: Amount of padding to put around element in pixels (left/right, top/bottom)
:type pad: (int, int) or ((int,int),(int,int)) :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int)
:param key: key for uniquely identify this element (for window.FindElement) :param key: key for uniquely identify this element (for window.FindElement)
:type key: Union[str, int, tuple] :type key: Union[str, int, tuple]
:return: returns a button :return: returns a button
@ -8332,7 +8355,7 @@ def Submit(button_text='Submit', size=(None, None), auto_size_button=None, butto
:type font: Union[str, Tuple[str, int]] :type font: Union[str, Tuple[str, int]]
:param focus: if focus should be set to this :param focus: if focus should be set to this
:param pad: Amount of padding to put around element in pixels (left/right, top/bottom) :param pad: Amount of padding to put around element in pixels (left/right, top/bottom)
:type pad: (int, int) or ((int,int),(int,int)) :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int)
:param key: key for uniquely identify this element (for window.FindElement) :param key: key for uniquely identify this element (for window.FindElement)
:type key: Union[str, int, tuple] :type key: Union[str, int, tuple]
:return: returns a button :return: returns a button
@ -8365,7 +8388,7 @@ def Open(button_text='Open', size=(None, None), auto_size_button=None, button_co
:type font: Union[str, Tuple[str, int]] :type font: Union[str, Tuple[str, int]]
:param focus: if focus should be set to this :param focus: if focus should be set to this
:param pad: Amount of padding to put around element in pixels (left/right, top/bottom) :param pad: Amount of padding to put around element in pixels (left/right, top/bottom)
:type pad: (int, int) or ((int,int),(int,int)) :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int)
:param key: key for uniquely identify this element (for window.FindElement) :param key: key for uniquely identify this element (for window.FindElement)
:type key: Union[str, int, tuple] :type key: Union[str, int, tuple]
@ -8396,7 +8419,7 @@ def OK(button_text='OK', size=(None, None), auto_size_button=None, button_color=
:type font: Union[str, Tuple[str, int]] :type font: Union[str, Tuple[str, int]]
:param focus: if focus should be set to this :param focus: if focus should be set to this
:param pad: Amount of padding to put around element in pixels (left/right, top/bottom) :param pad: Amount of padding to put around element in pixels (left/right, top/bottom)
:type pad: (int, int) or ((int,int),(int,int)) :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int)
:param key: key for uniquely identify this element (for window.FindElement) :param key: key for uniquely identify this element (for window.FindElement)
:type key: Union[str, int, tuple] :type key: Union[str, int, tuple]
:return: returns a button :return: returns a button
@ -8428,7 +8451,7 @@ def Ok(button_text='Ok', size=(None, None), auto_size_button=None, button_color=
:type font: Union[str, Tuple[str, int]] :type font: Union[str, Tuple[str, int]]
:param focus: if focus should be set to this :param focus: if focus should be set to this
:param pad: Amount of padding to put around element in pixels (left/right, top/bottom) :param pad: Amount of padding to put around element in pixels (left/right, top/bottom)
:type pad: (int, int) or ((int,int),(int,int)) :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int)
:param key: key for uniquely identify this element (for window.FindElement) :param key: key for uniquely identify this element (for window.FindElement)
:type key: Union[str, int, tuple] :type key: Union[str, int, tuple]
:return: returns a button :return: returns a button
@ -8460,7 +8483,7 @@ def Cancel(button_text='Cancel', size=(None, None), auto_size_button=None, butto
:param bind_return_key: (Default = False) :param bind_return_key: (Default = False)
:param focus: if focus should be set to this :param focus: if focus should be set to this
:param pad: Amount of padding to put around element in pixels (left/right, top/bottom) :param pad: Amount of padding to put around element in pixels (left/right, top/bottom)
:type pad: (int, int) or ((int,int),(int,int)) :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int)
:param key: key for uniquely identify this element (for window.FindElement) :param key: key for uniquely identify this element (for window.FindElement)
:type key: Union[str, int, tuple] :type key: Union[str, int, tuple]
@ -8491,7 +8514,7 @@ def Quit(button_text='Quit', size=(None, None), auto_size_button=None, button_co
:param bind_return_key: (Default = False) :param bind_return_key: (Default = False)
:param focus: if focus should be set to this :param focus: if focus should be set to this
:param pad: Amount of padding to put around element in pixels (left/right, top/bottom) :param pad: Amount of padding to put around element in pixels (left/right, top/bottom)
:type pad: (int, int) or ((int,int),(int,int)) :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int)
:param key: key for uniquely identify this element (for window.FindElement) :param key: key for uniquely identify this element (for window.FindElement)
:type key: Union[str, int, tuple] :type key: Union[str, int, tuple]
:return: returns a button :return: returns a button
@ -8523,7 +8546,7 @@ def Exit(button_text='Exit', size=(None, None), auto_size_button=None, button_co
:param bind_return_key: (Default = False) :param bind_return_key: (Default = False)
:param focus: if focus should be set to this :param focus: if focus should be set to this
:param pad: Amount of padding to put around element in pixels (left/right, top/bottom) :param pad: Amount of padding to put around element in pixels (left/right, top/bottom)
:type pad: (int, int) or ((int,int),(int,int)) :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int)
:param key: key for uniquely identify this element (for window.FindElement) :param key: key for uniquely identify this element (for window.FindElement)
:type key: Union[str, int, tuple] :type key: Union[str, int, tuple]
@ -8554,7 +8577,7 @@ def Yes(button_text='Yes', size=(None, None), auto_size_button=None, button_colo
:param bind_return_key: (Default = True) :param bind_return_key: (Default = True)
:param focus: if focus should be set to this :param focus: if focus should be set to this
:param pad: Amount of padding to put around element in pixels (left/right, top/bottom) :param pad: Amount of padding to put around element in pixels (left/right, top/bottom)
:type pad: (int, int) or ((int,int),(int,int)) :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int)
:param key: key for uniquely identify this element (for window.FindElement) :param key: key for uniquely identify this element (for window.FindElement)
:type key: Union[str, int, tuple] :type key: Union[str, int, tuple]
:return: returns a button :return: returns a button
@ -8586,7 +8609,7 @@ def No(button_text='No', size=(None, None), auto_size_button=None, button_color=
:param bind_return_key: (Default = False) :param bind_return_key: (Default = False)
:param focus: if focus should be set to this :param focus: if focus should be set to this
:param pad: Amount of padding to put around element in pixels (left/right, top/bottom) :param pad: Amount of padding to put around element in pixels (left/right, top/bottom)
:type pad: (int, int) or ((int,int),(int,int)) :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int)
:param key: key for uniquely identify this element (for window.FindElement) :param key: key for uniquely identify this element (for window.FindElement)
:type key: Union[str, int, tuple] :type key: Union[str, int, tuple]
@ -8617,7 +8640,7 @@ def Help(button_text='Help', size=(None, None), auto_size_button=None, button_co
:param bind_return_key: (Default = False) :param bind_return_key: (Default = False)
:param focus: if focus should be set to this :param focus: if focus should be set to this
:param pad: Amount of padding to put around element in pixels (left/right, top/bottom) :param pad: Amount of padding to put around element in pixels (left/right, top/bottom)
:type pad: (int, int) or ((int,int),(int,int)) :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int)
:param key: key for uniquely identify this element (for window.FindElement) :param key: key for uniquely identify this element (for window.FindElement)
:type key: Union[str, int, tuple] :type key: Union[str, int, tuple]
:return: returns a button :return: returns a button
@ -8649,7 +8672,7 @@ def Debug(button_text='', size=(None, None), auto_size_button=None, button_color
:param bind_return_key: (Default = False) :param bind_return_key: (Default = False)
:param focus: if focus should be set to this :param focus: if focus should be set to this
:param pad: Amount of padding to put around element in pixels (left/right, top/bottom) :param pad: Amount of padding to put around element in pixels (left/right, top/bottom)
:type pad: (int, int) or ((int,int),(int,int)) :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int)
:param key: key for uniquely identify this element (for window.FindElement) :param key: key for uniquely identify this element (for window.FindElement)
:type key: Union[str, int, tuple] :type key: Union[str, int, tuple]
:return: returns a button :return: returns a button
@ -8689,7 +8712,7 @@ def SimpleButton(button_text, image_filename=None, image_data=None, image_size=(
:type disabled: (bool) :type disabled: (bool)
:param focus: if focus should be set to this :param focus: if focus should be set to this
:param pad: Amount of padding to put around element in pixels (left/right, top/bottom) :param pad: Amount of padding to put around element in pixels (left/right, top/bottom)
:type pad: (int, int) or ((int,int),(int,int)) :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int)
:param key: key for uniquely identify this element (for window.FindElement) :param key: key for uniquely identify this element (for window.FindElement)
:type key: Union[str, int, tuple] :type key: Union[str, int, tuple]
:return: returns a button :return: returns a button
@ -8730,7 +8753,7 @@ def CloseButton(button_text, image_filename=None, image_data=None, image_size=(N
:type disabled: (bool) :type disabled: (bool)
:param focus: if focus should be set to this :param focus: if focus should be set to this
:param pad: Amount of padding to put around element in pixels (left/right, top/bottom) :param pad: Amount of padding to put around element in pixels (left/right, top/bottom)
:type pad: (int, int) or ((int,int),(int,int)) :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int)
:param key: key for uniquely identify this element (for window.FindElement) :param key: key for uniquely identify this element (for window.FindElement)
:type key: Union[str, int, tuple] :type key: Union[str, int, tuple]
:return: returns a button :return: returns a button
@ -8774,7 +8797,7 @@ def ReadButton(button_text, image_filename=None, image_data=None, image_size=(No
:type disabled: (bool) :type disabled: (bool)
:param focus: if focus should be set to this :param focus: if focus should be set to this
:param pad: Amount of padding to put around element in pixels (left/right, top/bottom) :param pad: Amount of padding to put around element in pixels (left/right, top/bottom)
:type pad: (int, int) or ((int,int),(int,int)) :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int)
:param key: key for uniquely identify this element (for window.FindElement) :param key: key for uniquely identify this element (for window.FindElement)
:type key: Union[str, int, tuple] :type key: Union[str, int, tuple]
@ -8818,7 +8841,7 @@ def RealtimeButton(button_text, image_filename=None, image_data=None, image_size
:param bind_return_key: (Default = False) :param bind_return_key: (Default = False)
:param focus: if focus should be set to this :param focus: if focus should be set to this
:param pad: Amount of padding to put around element in pixels (left/right, top/bottom) :param pad: Amount of padding to put around element in pixels (left/right, top/bottom)
:type pad: (int, int) or ((int,int),(int,int)) :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int)
:param key: key for uniquely identify this element (for window.FindElement) :param key: key for uniquely identify this element (for window.FindElement)
:type key: Union[str, int, tuple] :type key: Union[str, int, tuple]
@ -8858,7 +8881,7 @@ def DummyButton(button_text, image_filename=None, image_data=None, image_size=(N
:param bind_return_key: (Default = False) :param bind_return_key: (Default = False)
:param focus: if focus should be set to this :param focus: if focus should be set to this
:param pad: Amount of padding to put around element in pixels (left/right, top/bottom) :param pad: Amount of padding to put around element in pixels (left/right, top/bottom)
:type pad: (int, int) or ((int,int),(int,int)) :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int)
:param key: key for uniquely identify this element (for window.FindElement) :param key: key for uniquely identify this element (for window.FindElement)
:type key: Union[str, int, tuple] :type key: Union[str, int, tuple]
:return: returns a button :return: returns a button
@ -8904,7 +8927,7 @@ def CalendarButton(button_text, target=(None, None), close_when_date_chosen=True
:param bind_return_key: (Default = False) :param bind_return_key: (Default = False)
:param focus: if focus should be set to this :param focus: if focus should be set to this
:param pad: Amount of padding to put around element in pixels (left/right, top/bottom) :param pad: Amount of padding to put around element in pixels (left/right, top/bottom)
:type pad: (int, int) or ((int,int),(int,int)) :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int)
:param key: key for uniquely identify this element (for window.FindElement) :param key: key for uniquely identify this element (for window.FindElement)
:type key: Union[str, int, tuple] :type key: Union[str, int, tuple]
:param locale: :param locale:
@ -8954,7 +8977,7 @@ def ColorChooserButton(button_text, target=(None, None), image_filename=None, im
:param bind_return_key: (Default = False) :param bind_return_key: (Default = False)
:param focus: if focus should be set to this :param focus: if focus should be set to this
:param pad: Amount of padding to put around element in pixels (left/right, top/bottom) :param pad: Amount of padding to put around element in pixels (left/right, top/bottom)
:type pad: (int, int) or ((int,int),(int,int)) :type pad: (int, int) or ((int, int),(int,int)) or (int,(int,int)) or ((int, int),int)
:param key: key for uniquely identify this element (for window.FindElement) :param key: key for uniquely identify this element (for window.FindElement)
:type key: Union[str, int, tuple] :type key: Union[str, int, tuple]
:return: returns a button :return: returns a button
@ -9817,7 +9840,7 @@ def PackFormIntoFrame(form, containing_frame, toplevel_form):
if element.DisabledButtonColor[1] is not None: if element.DisabledButtonColor[1] is not None:
button_style.map(style_name, background=[('disabled', element.DisabledButtonColor[1])]) button_style.map(style_name, background=[('disabled', element.DisabledButtonColor[1])])
if height > 1: if height > 1:
button_style.configure(style_name, padding=height * _char_width_in_pixels(font)) button_style.configure(style_name, padding=height * _char_width_in_pixels(font)) # should this be height instead?
wraplen = tkbutton.winfo_reqwidth() # width of widget in Pixels wraplen = tkbutton.winfo_reqwidth() # width of widget in Pixels
if width != 0: if width != 0:
button_style.configure(style_name, wraplength=wraplen) # set wrap to width of widget button_style.configure(style_name, wraplength=wraplen) # set wrap to width of widget
@ -11145,8 +11168,7 @@ class QuickMeter(object):
active_meters = {} active_meters = {}
exit_reasons = {} exit_reasons = {}
def __init__(self, title, current_value, max_value, key, *args, orientation='v', bar_color=(None, None), def __init__(self, title, current_value, max_value, key, *args, orientation='v', bar_color=(None, None), button_color=(None, None), size=DEFAULT_PROGRESS_BAR_SIZE, border_width=None, grab_anywhere=False, no_titlebar=False):
button_color=(None, None), size=DEFAULT_PROGRESS_BAR_SIZE, border_width=None, grab_anywhere=False):
""" """
:param title: text to display in eleemnt :param title: text to display in eleemnt
@ -11171,6 +11193,8 @@ class QuickMeter(object):
:type border_width: (int) :type border_width: (int)
:param grab_anywhere: If True: can grab anywhere to move the window (Default = False) :param grab_anywhere: If True: can grab anywhere to move the window (Default = False)
:type grab_anywhere: (bool) :type grab_anywhere: (bool)
:param no_titlebar: If True: window will be created without a titlebar
:type no_titlebar: (bool)
""" """
self.start_time = datetime.datetime.utcnow() self.start_time = datetime.datetime.utcnow()
self.key = key self.key = key
@ -11180,6 +11204,7 @@ class QuickMeter(object):
self.grab_anywhere = grab_anywhere self.grab_anywhere = grab_anywhere
self.button_color = button_color self.button_color = button_color
self.border_width = border_width self.border_width = border_width
self.no_titlebar = no_titlebar
self.title = title self.title = title
self.current_value = current_value self.current_value = current_value
self.max_value = max_value self.max_value = max_value
@ -11206,7 +11231,7 @@ class QuickMeter(object):
col2 += [[T('', size=(30, 10), key='_STATS_')], col2 += [[T('', size=(30, 10), key='_STATS_')],
[Cancel(button_color=self.button_color), Stretch()]] [Cancel(button_color=self.button_color), Stretch()]]
layout = [Column(col), Column(col2)] layout = [Column(col), Column(col2)]
self.window = Window(self.title, grab_anywhere=self.grab_anywhere, border_depth=self.border_width) self.window = Window(self.title, grab_anywhere=self.grab_anywhere, border_depth=self.border_width, no_titlebar=self.no_titlebar)
self.window.Layout([layout]).Finalize() self.window.Layout([layout]).Finalize()
return self.window return self.window
@ -11257,8 +11282,7 @@ class QuickMeter(object):
return self.stat_messages return self.stat_messages
def OneLineProgressMeter(title, current_value, max_value, key, *args, orientation='v', bar_color=(None, None), def OneLineProgressMeter(title, current_value, max_value, key, *args, orientation='v', bar_color=(None, None), button_color=None, size=DEFAULT_PROGRESS_BAR_SIZE, border_width=None, grab_anywhere=False, no_titlebar=False):
button_color=None, size=DEFAULT_PROGRESS_BAR_SIZE, border_width=None, grab_anywhere=False):
""" """
:param title: text to display in eleemnt :param title: text to display in eleemnt
:type title: (str) :type title: (str)
@ -11273,7 +11297,7 @@ def OneLineProgressMeter(title, current_value, max_value, key, *args, orientatio
:param orientation: 'horizontal' or 'vertical' ('h' or 'v' work) (Default value = 'vertical' / 'v') :param orientation: 'horizontal' or 'vertical' ('h' or 'v' work) (Default value = 'vertical' / 'v')
:type orientation: (str) :type orientation: (str)
:param bar_color: color of a bar line :param bar_color: color of a bar line
:type bar_color: str :type bar_color: Tuple(str, str)
:param button_color: button color (foreground, background) :param button_color: button color (foreground, background)
:type button_color: Tuple[str, str] :type button_color: Tuple[str, str]
:param size: (w,h) w=characters-wide, h=rows-high (Default value = DEFAULT_PROGRESS_BAR_SIZE) :param size: (w,h) w=characters-wide, h=rows-high (Default value = DEFAULT_PROGRESS_BAR_SIZE)
@ -11282,12 +11306,13 @@ def OneLineProgressMeter(title, current_value, max_value, key, *args, orientatio
:type border_width: (int) :type border_width: (int)
:param grab_anywhere: If True: can grab anywhere to move the window (Default = False) :param grab_anywhere: If True: can grab anywhere to move the window (Default = False)
:type grab_anywhere: (bool) :type grab_anywhere: (bool)
:param no_titlebar: If True: no titlebar will be shown on the window
:type no_titlebar: (bool)
:return: True if updated successfully. False if user closed the meter with the X or Cancel button :return: True if updated successfully. False if user closed the meter with the X or Cancel button
:rtype: (bool) :rtype: (bool)
""" """
if key not in QuickMeter.active_meters: if key not in QuickMeter.active_meters:
meter = QuickMeter(title, current_value, max_value, key, *args, orientation=orientation, bar_color=bar_color, meter = QuickMeter(title, current_value, max_value, key, *args, orientation=orientation, bar_color=bar_color, button_color=button_color, size=size, border_width=border_width, grab_anywhere=grab_anywhere, no_titlebar=no_titlebar)
button_color=button_color, size=size, border_width=border_width, grab_anywhere=grab_anywhere)
QuickMeter.active_meters[key] = meter QuickMeter.active_meters[key] = meter
else: else:
meter = QuickMeter.active_meters[key] meter = QuickMeter.active_meters[key]
@ -11302,6 +11327,7 @@ def OneLineProgressMeterCancel(key):
Cancels and closes a previously created One Line Progress Meter window Cancels and closes a previously created One Line Progress Meter window
:param key: Key used when meter was created :param key: Key used when meter was created
:type key: (Any)
""" """
try: try:
meter = QuickMeter.active_meters[key] meter = QuickMeter.active_meters[key]
@ -11414,12 +11440,17 @@ class _DebugWin():
def PrintClose(): def PrintClose():
"""
Close a previously opened EasyPrint window
"""
EasyPrintClose() EasyPrintClose()
def EasyPrint(*args, size=(None, None), end=None, sep=None, location=(None, None), font=None, no_titlebar=False, def EasyPrint(*args, size=(None, None), end=None, sep=None, location=(None, None), font=None, no_titlebar=False,
no_button=False, grab_anywhere=False, keep_on_top=False, do_not_reroute_stdout=True, text_color=None, background_color=None): no_button=False, grab_anywhere=False, keep_on_top=False, do_not_reroute_stdout=True, text_color=None, background_color=None):
""" """
Works like a "print" statement but with windowing options. Routes output to the "Debug Window"
:param *args: stuff to output :param *args: stuff to output
:type *args: (Any) :type *args: (Any)
:param size: (w,h) w=characters-wide, h=rows-high :param size: (w,h) w=characters-wide, h=rows-high
@ -11461,6 +11492,9 @@ eprint = EasyPrint
def EasyPrintClose(): def EasyPrintClose():
"""
Close a previously opened EasyPrint window
"""
if _DebugWin.debug_window is not None: if _DebugWin.debug_window is not None:
_DebugWin.debug_window.Close() _DebugWin.debug_window.Close()
_DebugWin.debug_window = None _DebugWin.debug_window = None
@ -12773,6 +12807,7 @@ def theme_background_color(color=None):
Used for Windows and containers (Column, Frame, Tab) and tables Used for Windows and containers (Column, Frame, Tab) and tables
:return: (str) - color string of the background color currently in use :return: (str) - color string of the background color currently in use
:rtype: (str)
""" """
if color is not None: if color is not None:
set_options(background_color=color) set_options(background_color=color)
@ -12784,6 +12819,7 @@ def theme_element_background_color(color=None):
Sets/Returns the background color currently in use for all elements except containers Sets/Returns the background color currently in use for all elements except containers
:return: (str) - color string of the element background color currently in use :return: (str) - color string of the element background color currently in use
:rtype: (str)
""" """
if color is not None: if color is not None:
set_options(element_background_color=color) set_options(element_background_color=color)
@ -12795,6 +12831,7 @@ def theme_text_color(color=None):
Sets/Returns the text color currently in use Sets/Returns the text color currently in use
:return: (str) - color string of the text color currently in use :return: (str) - color string of the text color currently in use
:rtype: (str)
""" """
if color is not None: if color is not None:
set_options(text_color=color) set_options(text_color=color)
@ -12806,6 +12843,7 @@ def theme_text_element_background_color(color=None):
Sets/Returns the background color for text elements Sets/Returns the background color for text elements
:return: (str) - color string of the text background color currently in use :return: (str) - color string of the text background color currently in use
:rtype: (str)
""" """
if color is not None: if color is not None:
set_options(text_element_background_color=color) set_options(text_element_background_color=color)
@ -12816,6 +12854,7 @@ def theme_input_background_color(color=None):
Sets/Returns the input element background color currently in use Sets/Returns the input element background color currently in use
:return: (str) - color string of the input element background color currently in use :return: (str) - color string of the input element background color currently in use
:rtype: (str)
""" """
if color is not None: if color is not None:
set_options(input_elements_background_color=color) set_options(input_elements_background_color=color)
@ -12827,6 +12866,7 @@ def theme_input_text_color(color=None):
Sets/Returns the input element entry color (not the text but the thing that's displaying the text) Sets/Returns the input element entry color (not the text but the thing that's displaying the text)
:return: (str) - color string of the input element color currently in use :return: (str) - color string of the input element color currently in use
:rtype: (str)
""" """
if color is not None: if color is not None:
set_options(input_text_color=color) set_options(input_text_color=color)
@ -12839,6 +12879,7 @@ def theme_button_color(color=None):
Sets/Returns the button color currently in use Sets/Returns the button color currently in use
:return: Tuple[str, str] - TUPLE with color strings of the button color currently in use (button text color, button background color) :return: Tuple[str, str] - TUPLE with color strings of the button color currently in use (button text color, button background color)
:rtype: (str)
""" """
if color is not None: if color is not None:
set_options(button_color=color) set_options(button_color=color)
@ -12850,6 +12891,7 @@ def theme_progress_bar_color(color=None):
Sets/Returns the progress bar colors by the current color theme Sets/Returns the progress bar colors by the current color theme
:return: Tuple[str, str] - TUPLE with color strings of the ProgressBar color currently in use(button text color, button background color) :return: Tuple[str, str] - TUPLE with color strings of the ProgressBar color currently in use(button text color, button background color)
:rtype: (str)
""" """
if color is not None: if color is not None:
set_options(progress_meter_color=color) set_options(progress_meter_color=color)
@ -12861,6 +12903,7 @@ def theme_slider_color(color=None):
Sets/Returns the slider color (used for sliders) Sets/Returns the slider color (used for sliders)
:return: (str) - color string of the slider color currently in use :return: (str) - color string of the slider color currently in use
:rtype: (str)
""" """
if color is not None: if color is not None:
set_options(scrollbar_color=color) set_options(scrollbar_color=color)
@ -12873,6 +12916,7 @@ def theme_border_width(border_width=None):
Used by non ttk elements at the moment Used by non ttk elements at the moment
:return: (int) - border width currently in use :return: (int) - border width currently in use
:rtype: (str)
""" """
if border_width is not None: if border_width is not None:
set_options(border_width=border_width) set_options(border_width=border_width)
@ -12884,6 +12928,7 @@ def theme_slider_border_width(border_width=None):
Sets/Returns the slider border width currently in use Sets/Returns the slider border width currently in use
:return: (int) - border width currently in use :return: (int) - border width currently in use
:rtype: (str)
""" """
if border_width is not None: if border_width is not None:
set_options(slider_border_width=border_width) set_options(slider_border_width=border_width)
@ -12895,6 +12940,7 @@ def theme_progress_bar_border_width(border_width=None):
Sets/Returns the progress meter border width currently in use Sets/Returns the progress meter border width currently in use
:return: (int) - border width currently in use :return: (int) - border width currently in use
:rtype: (str)
""" """
if border_width is not None: if border_width is not None:
set_options(progress_meter_border_depth=border_width) set_options(progress_meter_border_depth=border_width)
@ -12907,6 +12953,7 @@ def theme_element_text_color(color=None):
Sets/Returns the text color used by elements that have text as part of their display (Tables, Trees and Sliders) Sets/Returns the text color used by elements that have text as part of their display (Tables, Trees and Sliders)
:return: (str) - color string currently in use :return: (str) - color string currently in use
:rtype: (str)
""" """
if color is not None: if color is not None:
set_options(element_text_color=color) set_options(element_text_color=color)
@ -12918,6 +12965,7 @@ def theme_list():
Returns a sorted list of the currently available color themes Returns a sorted list of the currently available color themes
:return: List[str] - A sorted list of the currently available color themes :return: List[str] - A sorted list of the currently available color themes
:rtype: (str)
""" """
return list_of_look_and_feel_values() return list_of_look_and_feel_values()
@ -13178,7 +13226,7 @@ def Popup(*args, title=None, button_color=None, background_color=None, text_colo
:param text_color: text color :param text_color: text color
:type text_color: (str) :type text_color: (str)
:param button_type: NOT USER SET! Determines which pre-defined buttons will be shown (Default value = POPUP_BUTTONS_OK). There are many Popup functions and they call Popup, changing this parameter to get the desired effect. :param button_type: NOT USER SET! Determines which pre-defined buttons will be shown (Default value = POPUP_BUTTONS_OK). There are many Popup functions and they call Popup, changing this parameter to get the desired effect.
:type button_type: (enum) :type button_type: (int)
:param auto_close: If True the window will automatically close :param auto_close: If True the window will automatically close
:type auto_close: (bool) :type auto_close: (bool)
:param auto_close_duration: time in seconds to keep window open before closing it automatically :param auto_close_duration: time in seconds to keep window open before closing it automatically
@ -13428,7 +13476,7 @@ def PopupNonBlocking(*args, title=None, button_type=POPUP_BUTTONS_OK, button_col
:param title: Title to display in the window. :param title: Title to display in the window.
:type title: (str) :type title: (str)
:param button_type: Determines which pre-defined buttons will be shown (Default value = POPUP_BUTTONS_OK). :param button_type: Determines which pre-defined buttons will be shown (Default value = POPUP_BUTTONS_OK).
:type button_type: (enum) :type button_type: (int)
:param button_color: button color (foreground, background) :param button_color: button color (foreground, background)
:type button_color: Tuple[str, str] :type button_color: Tuple[str, str]
:param background_color: color of background :param background_color: color of background
@ -13477,7 +13525,7 @@ def PopupQuick(*args, title=None, button_type=POPUP_BUTTONS_OK, button_color=Non
:param title: Title to display in the window. :param title: Title to display in the window.
:type title: (str) :type title: (str)
:param button_type: Determines which pre-defined buttons will be shown (Default value = POPUP_BUTTONS_OK). :param button_type: Determines which pre-defined buttons will be shown (Default value = POPUP_BUTTONS_OK).
:type button_type: (enum) :type button_type: (int)
:param button_color: button color (foreground, background) :param button_color: button color (foreground, background)
:type button_color: Tuple[str, str] :type button_color: Tuple[str, str]
:param background_color: color of background :param background_color: color of background
@ -13525,7 +13573,7 @@ def PopupQuickMessage(*args, title=None, button_type=POPUP_BUTTONS_NO_BUTTONS, b
:param title: Title to display in the window. :param title: Title to display in the window.
:type title: (str) :type title: (str)
:param button_type: Determines which pre-defined buttons will be shown (Default value = POPUP_BUTTONS_OK). :param button_type: Determines which pre-defined buttons will be shown (Default value = POPUP_BUTTONS_OK).
:type button_type: (enum) :type button_type: (int)
:param button_color: button color (foreground, background) :param button_color: button color (foreground, background)
:type button_color: Tuple[str, str] :type button_color: Tuple[str, str]
:param background_color: color of background :param background_color: color of background
@ -13571,7 +13619,7 @@ def PopupNoTitlebar(*args, title=None, button_type=POPUP_BUTTONS_OK, button_colo
:param title: Title to display in the window. :param title: Title to display in the window.
:type title: (str) :type title: (str)
:param button_type: Determines which pre-defined buttons will be shown (Default value = POPUP_BUTTONS_OK). :param button_type: Determines which pre-defined buttons will be shown (Default value = POPUP_BUTTONS_OK).
:type button_type: (enum) :type button_type: (int)
:param button_color: button color (foreground, background) :param button_color: button color (foreground, background)
:type button_color: Tuple[str, str] :type button_color: Tuple[str, str]
:param background_color: color of background :param background_color: color of background
@ -13622,15 +13670,13 @@ def PopupAutoClose(*args, title=None, button_type=POPUP_BUTTONS_OK, button_color
:param title: Title to display in the window. :param title: Title to display in the window.
:type title: (str) :type title: (str)
:param button_type: Determines which pre-defined buttons will be shown (Default value = POPUP_BUTTONS_OK). :param button_type: Determines which pre-defined buttons will be shown (Default value = POPUP_BUTTONS_OK).
:type button_type: (enum) :type button_type: (int)
:param button_color: button color (foreground, background) :param button_color: button color (foreground, background)
:type button_color: Tuple[str, str] :type button_color: Tuple[str, str]
:param background_color: color of background :param background_color: color of background
:type background_color: (str) :type background_color: (str)
:param text_color: color of the text :param text_color: color of the text
:type text_color: (str) :type text_color: (str)
:param auto_close: if True window will close itself :param auto_close: if True window will close itself
:type auto_close: (bool) :type auto_close: (bool)
:param auto_close_duration: Older versions only accept int. Time in seconds until window will close :param auto_close_duration: Older versions only accept int. Time in seconds until window will close
@ -15358,10 +15404,12 @@ theme(CURRENT_LOOK_AND_FEEL)
# -------------------------------- ENTRY POINT IF RUN STANDALONE -------------------------------- # # -------------------------------- ENTRY POINT IF RUN STANDALONE -------------------------------- #
if __name__ == '__main__': if __name__ == '__main__':
# To execute the upgrade from command line, type:
# python -m PySimpleGUI.PySimpleGUI upgrade
if len(sys.argv) > 1 and sys.argv[1] == 'upgrade': if len(sys.argv) > 1 and sys.argv[1] == 'upgrade':
_upgrade_gui() _upgrade_gui()
exit(69) exit(0)
main() main()
exit(69) exit(0)