Release 4.25.0
This commit is contained in:
parent
e8e7104477
commit
934cea5881
|
@ -1,6 +1,6 @@
|
||||||
#!/usr/bin/python3
|
#!/usr/bin/python3
|
||||||
|
|
||||||
version = __version__ = "4.24.0.18 Unreleased\nAdded k parameter to buttons, new text wrapping behavior for popups, new docstring for keys, new single-string button_color format ('white on red'), moved Tree image caching to be on a per-element basis rather than system wide, automatically refresh window when printing to multiline, Output element will now auto-refresh window after every print call, new paramters to Multiline to reroute stdout/stderr, turned off autoscroll for cprint and re-routed stdout prints, new Table, Tree parameter - selected_row_color, Table & Tree now use 2 colors to define the selected row - they default to the button color for the theme, new version of the fixed mapping function, added Window.make_modal, new modal parameter added to all popups, more theme_previewer parameters, Combo - don't select first entry if updated with a new set of values, multi-threaded support using Window.write_event_value, force preview tooltip to close when new tooltip shown"
|
version = __version__ = "4.25.0 Released 17-Jul-2020"
|
||||||
|
|
||||||
port = 'PySimpleGUI'
|
port = 'PySimpleGUI'
|
||||||
|
|
||||||
|
@ -6975,6 +6975,9 @@ class Window:
|
||||||
self.thread_queue = None # type: queue.Queue
|
self.thread_queue = None # type: queue.Queue
|
||||||
self.thread_key = None # type: Any
|
self.thread_key = None # type: Any
|
||||||
self.thread_strvar = None # type: tk.StringVar
|
self.thread_strvar = None # type: tk.StringVar
|
||||||
|
self.read_closed_window_count = 0
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if layout is not None and type(layout) not in (list, tuple):
|
if layout is not None and type(layout) not in (list, tuple):
|
||||||
warnings.warn('Your layout is not a list or tuple... this is not good!')
|
warnings.warn('Your layout is not a list or tuple... this is not good!')
|
||||||
|
@ -7357,6 +7360,9 @@ class Window:
|
||||||
self.TimeoutKey = timeout_key
|
self.TimeoutKey = timeout_key
|
||||||
self.NonBlocking = False
|
self.NonBlocking = False
|
||||||
if self.TKrootDestroyed:
|
if self.TKrootDestroyed:
|
||||||
|
self.read_closed_window_count += 1
|
||||||
|
if self.read_closed_window_count > 100:
|
||||||
|
popup_error('You have tried 100 times to read a closed window.', 'You need to add a check for event == WIN_CLOSED', title='Trying to read a closed window')
|
||||||
return None, None
|
return None, None
|
||||||
if not self.Shown:
|
if not self.Shown:
|
||||||
self._Show()
|
self._Show()
|
||||||
|
@ -8059,6 +8065,7 @@ class Window:
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
def SendToBack(self):
|
def SendToBack(self):
|
||||||
"""
|
"""
|
||||||
Pushes this window to the bottom of the stack of windows. It is the opposite of BringToFront
|
Pushes this window to the bottom of the stack of windows. It is the opposite of BringToFront
|
||||||
|
@ -8070,6 +8077,7 @@ class Window:
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
def CurrentLocation(self):
|
def CurrentLocation(self):
|
||||||
"""
|
"""
|
||||||
Get the current location of the window's top left corner
|
Get the current location of the window's top left corner
|
||||||
|
@ -8081,6 +8089,7 @@ class Window:
|
||||||
return
|
return
|
||||||
return int(self.TKroot.winfo_x()), int(self.TKroot.winfo_y())
|
return int(self.TKroot.winfo_x()), int(self.TKroot.winfo_y())
|
||||||
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def Size(self):
|
def Size(self):
|
||||||
"""
|
"""
|
||||||
|
@ -8095,6 +8104,7 @@ class Window:
|
||||||
win_height = self.TKroot.winfo_height()
|
win_height = self.TKroot.winfo_height()
|
||||||
return win_width, win_height
|
return win_width, win_height
|
||||||
|
|
||||||
|
|
||||||
@Size.setter
|
@Size.setter
|
||||||
def Size(self, size):
|
def Size(self, size):
|
||||||
"""
|
"""
|
||||||
|
@ -8109,6 +8119,7 @@ class Window:
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
def VisibilityChanged(self):
|
def VisibilityChanged(self):
|
||||||
"""
|
"""
|
||||||
Not used in tkinter, but supplied becuase it is used in Qt. Want to remain source code compatible so that if
|
Not used in tkinter, but supplied becuase it is used in Qt. Want to remain source code compatible so that if
|
||||||
|
@ -8118,6 +8129,7 @@ class Window:
|
||||||
# A dummy function. Needed in Qt but not tkinter
|
# A dummy function. Needed in Qt but not tkinter
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
def SetTransparentColor(self, color):
|
def SetTransparentColor(self, color):
|
||||||
"""
|
"""
|
||||||
Set the color that will be transparent in your window. Areas with this color will be SEE THROUGH.
|
Set the color that will be transparent in your window. Areas with this color will be SEE THROUGH.
|
||||||
|
@ -8132,6 +8144,7 @@ class Window:
|
||||||
except:
|
except:
|
||||||
print('Transparent color not supported on this platform (windows only)')
|
print('Transparent color not supported on this platform (windows only)')
|
||||||
|
|
||||||
|
|
||||||
def GrabAnyWhereOn(self):
|
def GrabAnyWhereOn(self):
|
||||||
"""
|
"""
|
||||||
Turns on Grab Anywhere functionality AFTER a window has been created. Don't try on a window that's not yet
|
Turns on Grab Anywhere functionality AFTER a window has been created. Don't try on a window that's not yet
|
||||||
|
@ -8143,6 +8156,7 @@ class Window:
|
||||||
self.TKroot.bind("<ButtonRelease-1>", self._StopMove)
|
self.TKroot.bind("<ButtonRelease-1>", self._StopMove)
|
||||||
self.TKroot.bind("<B1-Motion>", self._OnMotion)
|
self.TKroot.bind("<B1-Motion>", self._OnMotion)
|
||||||
|
|
||||||
|
|
||||||
def GrabAnyWhereOff(self):
|
def GrabAnyWhereOff(self):
|
||||||
"""
|
"""
|
||||||
Turns off Grab Anywhere functionality AFTER a window has been created. Don't try on a window that's not yet
|
Turns off Grab Anywhere functionality AFTER a window has been created. Don't try on a window that's not yet
|
||||||
|
@ -8154,6 +8168,7 @@ class Window:
|
||||||
self.TKroot.unbind("<ButtonRelease-1>")
|
self.TKroot.unbind("<ButtonRelease-1>")
|
||||||
self.TKroot.unbind("<B1-Motion>")
|
self.TKroot.unbind("<B1-Motion>")
|
||||||
|
|
||||||
|
|
||||||
def _user_bind_callback(self, bind_string, event):
|
def _user_bind_callback(self, bind_string, event):
|
||||||
"""
|
"""
|
||||||
Used when user binds a tkinter event directly to an element
|
Used when user binds a tkinter event directly to an element
|
||||||
|
@ -8173,6 +8188,7 @@ class Window:
|
||||||
if self.CurrentlyRunningMainloop:
|
if self.CurrentlyRunningMainloop:
|
||||||
self.TKroot.quit()
|
self.TKroot.quit()
|
||||||
|
|
||||||
|
|
||||||
def bind(self, bind_string, key):
|
def bind(self, bind_string, key):
|
||||||
"""
|
"""
|
||||||
Used to add tkinter events to a Window.
|
Used to add tkinter events to a Window.
|
||||||
|
@ -8187,6 +8203,7 @@ class Window:
|
||||||
self.TKroot.bind(bind_string, lambda evt: self._user_bind_callback(bind_string, evt))
|
self.TKroot.bind(bind_string, lambda evt: self._user_bind_callback(bind_string, evt))
|
||||||
self.user_bind_dict[bind_string] = key
|
self.user_bind_dict[bind_string] = key
|
||||||
|
|
||||||
|
|
||||||
def _callback_main_debugger_window_create_keystroke(self, event):
|
def _callback_main_debugger_window_create_keystroke(self, event):
|
||||||
"""
|
"""
|
||||||
Called when user presses the key that creates the main debugger window
|
Called when user presses the key that creates the main debugger window
|
||||||
|
@ -8195,6 +8212,7 @@ class Window:
|
||||||
"""
|
"""
|
||||||
_Debugger.debugger._build_main_debugger_window()
|
_Debugger.debugger._build_main_debugger_window()
|
||||||
|
|
||||||
|
|
||||||
def _callback_popout_window_create_keystroke(self, event):
|
def _callback_popout_window_create_keystroke(self, event):
|
||||||
"""
|
"""
|
||||||
Called when user presses the key that creates the floating debugger window
|
Called when user presses the key that creates the floating debugger window
|
||||||
|
@ -8203,6 +8221,7 @@ class Window:
|
||||||
"""
|
"""
|
||||||
_Debugger.debugger._build_floating_window()
|
_Debugger.debugger._build_floating_window()
|
||||||
|
|
||||||
|
|
||||||
def EnableDebugger(self):
|
def EnableDebugger(self):
|
||||||
"""
|
"""
|
||||||
Enables the internal debugger. By default, the debugger IS enabled
|
Enables the internal debugger. By default, the debugger IS enabled
|
||||||
|
@ -8213,6 +8232,7 @@ class Window:
|
||||||
self.TKroot.bind('<Pause>', self._callback_popout_window_create_keystroke)
|
self.TKroot.bind('<Pause>', self._callback_popout_window_create_keystroke)
|
||||||
self.DebuggerEnabled = True
|
self.DebuggerEnabled = True
|
||||||
|
|
||||||
|
|
||||||
def DisableDebugger(self):
|
def DisableDebugger(self):
|
||||||
"""
|
"""
|
||||||
Disable the internal debugger. By default the debugger is ENABLED
|
Disable the internal debugger. By default the debugger is ENABLED
|
||||||
|
@ -8237,6 +8257,10 @@ class Window:
|
||||||
|
|
||||||
|
|
||||||
def make_modal(self):
|
def make_modal(self):
|
||||||
|
"""
|
||||||
|
Makes a window into a "Modal Window"
|
||||||
|
This means user will not be able to interact with other windows until this one is closed
|
||||||
|
"""
|
||||||
if not self._is_window_created():
|
if not self._is_window_created():
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -8248,6 +8272,17 @@ class Window:
|
||||||
print('Exception trying to make modal', e)
|
print('Exception trying to make modal', e)
|
||||||
|
|
||||||
|
|
||||||
|
def was_closed(self):
|
||||||
|
"""
|
||||||
|
Returns True if the window was closed
|
||||||
|
|
||||||
|
:return: True if the window is closed
|
||||||
|
:rtype: bool
|
||||||
|
"""
|
||||||
|
return self.TKrootDestroyed
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def _window_tkvar_changed_callback(self, event, *args):
|
def _window_tkvar_changed_callback(self, event, *args):
|
||||||
"""
|
"""
|
||||||
Internal callback function for when the thread
|
Internal callback function for when the thread
|
||||||
|
@ -16847,7 +16882,7 @@ def main():
|
||||||
[Button('Button'), B('Hide Stuff', metadata='my metadata'),
|
[Button('Button'), B('Hide Stuff', metadata='my metadata'),
|
||||||
Button('ttk Button', use_ttk_buttons=True, tooltip='This is a TTK Button'),
|
Button('ttk Button', use_ttk_buttons=True, tooltip='This is a TTK Button'),
|
||||||
Button('See-through Mode', tooltip='Make the background transparent'),
|
Button('See-through Mode', tooltip='Make the background transparent'),
|
||||||
Button('Install PySimpleGUI from GitHub', button_color='white on red', key='-INSTALL-'),
|
Button('Updrade PySimpleGUI from GitHub', button_color='white on red', key='-INSTALL-'),
|
||||||
B('Popup'),
|
B('Popup'),
|
||||||
Button('Exit', tooltip='Exit button')],
|
Button('Exit', tooltip='Exit button')],
|
||||||
]
|
]
|
||||||
|
@ -16957,7 +16992,8 @@ test = main
|
||||||
theme(CURRENT_LOOK_AND_FEEL)
|
theme(CURRENT_LOOK_AND_FEEL)
|
||||||
|
|
||||||
__tclversion_detailed__ = tkinter.Tcl().eval('info patchlevel')
|
__tclversion_detailed__ = tkinter.Tcl().eval('info patchlevel')
|
||||||
|
if __tclversion_detailed__.startswith('8.5'):
|
||||||
|
warnings.warn('You are running a VERY old version of tkinter {}'.format(__tclversion_detailed__), UserWarning)
|
||||||
|
|
||||||
# -------------------------------- ENTRY POINT IF RUN STANDALONE -------------------------------- #
|
# -------------------------------- ENTRY POINT IF RUN STANDALONE -------------------------------- #
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1448,7 +1448,8 @@ Popup(args=*<1 or N object>,
|
||||||
keep_on_top=False,
|
keep_on_top=False,
|
||||||
location=(None, None),
|
location=(None, None),
|
||||||
any_key_closes=False,
|
any_key_closes=False,
|
||||||
image=None)
|
image=None,
|
||||||
|
modal=True)
|
||||||
```
|
```
|
||||||
|
|
||||||
Parameter Descriptions:
|
Parameter Descriptions:
|
||||||
|
@ -1474,6 +1475,7 @@ Parameter Descriptions:
|
||||||
| bool | keep_on_top | If True the window will remain above all current windows |
|
| bool | keep_on_top | If True the window will remain above all current windows |
|
||||||
| bool | any_key_closes | If True then will turn on return_keyboard_events for the window which will cause window to close as soon as any key is pressed. Normally the return key only will close the window. Default is false. |
|
| bool | any_key_closes | If True then will turn on return_keyboard_events for the window which will cause window to close as soon as any key is pressed. Normally the return key only will close the window. Default is false. |
|
||||||
| str) or (bytes | image | Image to include at the top of the popup window |
|
| str) or (bytes | image | Image to include at the top of the popup window |
|
||||||
|
| bool | modal | If True then makes the popup will behave like a Modal window... all other windows are non-operational until this one is closed. Default = False |
|
||||||
| Union[str, None] | **RETURN** | Returns text of the button that was pressed. None will be returned if user closed window with X
|
| Union[str, None] | **RETURN** | Returns text of the button that was pressed. None will be returned if user closed window with X
|
||||||
|
|
||||||
The other output Popups are variations on parameters. Usually the button_type parameter is the primary one changed.
|
The other output Popups are variations on parameters. Usually the button_type parameter is the primary one changed.
|
||||||
|
@ -1513,7 +1515,8 @@ popup_scrolled(args=*<1 or N object>,
|
||||||
grab_anywhere=False,
|
grab_anywhere=False,
|
||||||
keep_on_top=False,
|
keep_on_top=False,
|
||||||
font=None,
|
font=None,
|
||||||
image=None)
|
image=None,
|
||||||
|
modal=True)
|
||||||
```
|
```
|
||||||
|
|
||||||
Parameter Descriptions:
|
Parameter Descriptions:
|
||||||
|
@ -1522,7 +1525,7 @@ Parameter Descriptions:
|
||||||
|--|--|--|
|
|--|--|--|
|
||||||
| Any | *args | Variable number of items to display |
|
| Any | *args | Variable number of items to display |
|
||||||
| str | title | Title to display in the window. |
|
| str | title | Title to display in the window. |
|
||||||
| Tuple[str, str] | button_color | button color (foreground, background) |
|
| Tuple[str, str] or str | button_color | button color (foreground, background) |
|
||||||
| bool | yes_no | If True, displays Yes and No buttons instead of Ok |
|
| bool | yes_no | If True, displays Yes and No buttons instead of Ok |
|
||||||
| bool | auto_close | if True window will close itself |
|
| bool | auto_close | if True window will close itself |
|
||||||
| Union[int, float] | auto_close_duration | Older versions only accept int. Time in seconds until window will close |
|
| Union[int, float] | auto_close_duration | Older versions only accept int. Time in seconds until window will close |
|
||||||
|
@ -1536,6 +1539,7 @@ Parameter Descriptions:
|
||||||
| bool | keep_on_top | If True the window will remain above all current windows |
|
| bool | keep_on_top | If True the window will remain above all current windows |
|
||||||
| Union[str, Tuple[str, int]] | font | specifies the font family, size, etc |
|
| Union[str, Tuple[str, int]] | font | specifies the font family, size, etc |
|
||||||
| str) or (bytes | image | Image to include at the top of the popup window |
|
| str) or (bytes | image | Image to include at the top of the popup window |
|
||||||
|
| bool | modal | If True then makes the popup will behave like a Modal window... all other windows are non-operational until this one is closed. Default = False |
|
||||||
| Union[str, None, TIMEOUT_KEY] | **RETURN** | Returns text of the button that was pressed. None will be returned if user closed window with X
|
| Union[str, None, TIMEOUT_KEY] | **RETURN** | Returns text of the button that was pressed. None will be returned if user closed window with X
|
||||||
|
|
||||||
Typical usage:
|
Typical usage:
|
||||||
|
@ -1577,7 +1581,8 @@ popup_no_wait(args=*<1 or N object>,
|
||||||
grab_anywhere=False,
|
grab_anywhere=False,
|
||||||
keep_on_top=False,
|
keep_on_top=False,
|
||||||
location=(None, None),
|
location=(None, None),
|
||||||
image=None)
|
image=None,
|
||||||
|
modal=False)
|
||||||
```
|
```
|
||||||
|
|
||||||
Parameter Descriptions:
|
Parameter Descriptions:
|
||||||
|
@ -1587,7 +1592,7 @@ Parameter Descriptions:
|
||||||
| Any | *args | Variable number of items to display |
|
| Any | *args | Variable number of items to display |
|
||||||
| str | title | Title to display in the window. |
|
| str | title | Title to display in the window. |
|
||||||
| int | button_type | Determines which pre-defined buttons will be shown (Default value = POPUP_BUTTONS_OK). |
|
| int | button_type | Determines which pre-defined buttons will be shown (Default value = POPUP_BUTTONS_OK). |
|
||||||
| Tuple[str, str] | button_color | button color (foreground, background) |
|
| Tuple[str, str] or str | button_color | button color (foreground, background) |
|
||||||
| str | background_color | color of background |
|
| str | background_color | color of background |
|
||||||
| str | text_color | color of the text |
|
| str | text_color | color of the text |
|
||||||
| bool | auto_close | if True window will close itself |
|
| bool | auto_close | if True window will close itself |
|
||||||
|
@ -1600,6 +1605,7 @@ Parameter Descriptions:
|
||||||
| bool | grab_anywhere | If True: can grab anywhere to move the window (Default = False) |
|
| bool | grab_anywhere | If True: can grab anywhere to move the window (Default = False) |
|
||||||
| Tuple[int, int] | location | Location of upper left corner of the window |
|
| Tuple[int, int] | location | Location of upper left corner of the window |
|
||||||
| str) or (bytes | image | Image to include at the top of the popup window |
|
| str) or (bytes | image | Image to include at the top of the popup window |
|
||||||
|
| bool | modal | If True then makes the popup will behave like a Modal window... all other windows are non-operational until this one is closed. Default = False |
|
||||||
| Union[str, None] | **RETURN** | Reason for popup closing
|
| Union[str, None] | **RETURN** | Reason for popup closing
|
||||||
|
|
||||||
The `popup` call `popup_no_wait` or `popup_non_blocking` will create a popup window and then immediately return control back to you. You can turn other popup calls into non-blocking popups if they have a `non_blocking` parameter. Setting `non_blocking` to True will cause the function to return immediately rather than waiting for the window to be closed.
|
The `popup` call `popup_no_wait` or `popup_non_blocking` will create a popup window and then immediately return control back to you. You can turn other popup calls into non-blocking popups if they have a `non_blocking` parameter. Setting `non_blocking` to True will cause the function to return immediately rather than waiting for the window to be closed.
|
||||||
|
@ -1640,7 +1646,8 @@ popup_get_text(message,
|
||||||
grab_anywhere=False,
|
grab_anywhere=False,
|
||||||
keep_on_top=False,
|
keep_on_top=False,
|
||||||
location=(None, None),
|
location=(None, None),
|
||||||
image=None)
|
image=None,
|
||||||
|
modal=True)
|
||||||
```
|
```
|
||||||
|
|
||||||
Parameter Descriptions:
|
Parameter Descriptions:
|
||||||
|
@ -1652,7 +1659,7 @@ Parameter Descriptions:
|
||||||
| str | default_text | default value to put into input area |
|
| str | default_text | default value to put into input area |
|
||||||
| str | password_char | character to be shown instead of actually typed characters |
|
| str | password_char | character to be shown instead of actually typed characters |
|
||||||
| (int, int) | size | (width, height) of the InputText Element |
|
| (int, int) | size | (width, height) of the InputText Element |
|
||||||
| Tuple[str, str] | button_color | Color of the button (text, background) |
|
| Tuple[str, str] or str | button_color | Color of the button (text, background) |
|
||||||
| str | background_color | background color of the entire window |
|
| str | background_color | background color of the entire window |
|
||||||
| str | text_color | color of the message text |
|
| str | text_color | color of the message text |
|
||||||
| Union[bytes, str] | icon | filename or base64 string to be used for the window's icon |
|
| Union[bytes, str] | icon | filename or base64 string to be used for the window's icon |
|
||||||
|
@ -1662,6 +1669,7 @@ Parameter Descriptions:
|
||||||
| bool | keep_on_top | If True the window will remain above all current windows |
|
| bool | keep_on_top | If True the window will remain above all current windows |
|
||||||
| Tuple[int, int] | location | (x,y) Location on screen to display the upper left corner of window |
|
| Tuple[int, int] | location | (x,y) Location on screen to display the upper left corner of window |
|
||||||
| str) or (bytes | image | Image to include at the top of the popup window |
|
| str) or (bytes | image | Image to include at the top of the popup window |
|
||||||
|
| bool | modal | If True then makes the popup will behave like a Modal window... all other windows are non-operational until this one is closed. Default = False |
|
||||||
| Union[str, None] | **RETURN** | Text entered or None if window was closed or cancel button clicked
|
| Union[str, None] | **RETURN** | Text entered or None if window was closed or cancel button clicked
|
||||||
|
|
||||||
```python
|
```python
|
||||||
|
@ -1700,7 +1708,8 @@ popup_get_file(message,
|
||||||
keep_on_top=False,
|
keep_on_top=False,
|
||||||
location=(None, None),
|
location=(None, None),
|
||||||
initial_folder=None,
|
initial_folder=None,
|
||||||
image=None)
|
image=None,
|
||||||
|
modal=True)
|
||||||
```
|
```
|
||||||
|
|
||||||
Parameter Descriptions:
|
Parameter Descriptions:
|
||||||
|
@ -1716,7 +1725,7 @@ Parameter Descriptions:
|
||||||
| Tuple[Tuple[str,str]] | file_types | List of extensions to show using wildcards. All files (the default) = (("ALL Files", "*.*"),) |
|
| Tuple[Tuple[str,str]] | file_types | List of extensions to show using wildcards. All files (the default) = (("ALL Files", "*.*"),) |
|
||||||
| bool | no_window | if True, no PySimpleGUI window will be shown. Instead just the tkinter dialog is shown |
|
| bool | no_window | if True, no PySimpleGUI window will be shown. Instead just the tkinter dialog is shown |
|
||||||
| (int, int) | size | (width, height) of the InputText Element |
|
| (int, int) | size | (width, height) of the InputText Element |
|
||||||
| Tuple[str, str] | button_color | Color of the button (text, background) |
|
| Tuple[str, str] or str | button_color | Color of the button (text, background) |
|
||||||
| str | background_color | background color of the entire window |
|
| str | background_color | background color of the entire window |
|
||||||
| str | text_color | color of the text |
|
| str | text_color | color of the text |
|
||||||
| Union[bytes, str] | icon | filename or base64 string to be used for the window's icon |
|
| Union[bytes, str] | icon | filename or base64 string to be used for the window's icon |
|
||||||
|
@ -1727,6 +1736,7 @@ Parameter Descriptions:
|
||||||
| Tuple[int, int] | location | Location of upper left corner of the window |
|
| Tuple[int, int] | location | Location of upper left corner of the window |
|
||||||
| str | initial_folder | location in filesystem to begin browsing |
|
| str | initial_folder | location in filesystem to begin browsing |
|
||||||
| str) or (bytes | image | Image to include at the top of the popup window |
|
| str) or (bytes | image | Image to include at the top of the popup window |
|
||||||
|
| bool | modal | If True then makes the popup will behave like a Modal window... all other windows are non-operational until this one is closed. Default = False |
|
||||||
| Union[str, None] | **RETURN** | string representing the file(s) chosen, None if cancelled or window closed with X
|
| Union[str, None] | **RETURN** | string representing the file(s) chosen, None if cancelled or window closed with X
|
||||||
|
|
||||||
If configured as an Open File Popup then (save_as is not True) the dialog box will look like this.
|
If configured as an Open File Popup then (save_as is not True) the dialog box will look like this.
|
||||||
|
@ -1770,7 +1780,8 @@ popup_get_folder(message,
|
||||||
keep_on_top=False,
|
keep_on_top=False,
|
||||||
location=(None, None),
|
location=(None, None),
|
||||||
initial_folder=None,
|
initial_folder=None,
|
||||||
image=None)
|
image=None,
|
||||||
|
modal=True)
|
||||||
```
|
```
|
||||||
|
|
||||||
Parameter Descriptions:
|
Parameter Descriptions:
|
||||||
|
@ -1782,7 +1793,7 @@ Parameter Descriptions:
|
||||||
| str | default_path | path to display to user as starting point (filled into the input field) |
|
| str | default_path | path to display to user as starting point (filled into the input field) |
|
||||||
| bool | no_window | if True, no PySimpleGUI window will be shown. Instead just the tkinter dialog is shown |
|
| bool | no_window | if True, no PySimpleGUI window will be shown. Instead just the tkinter dialog is shown |
|
||||||
| (int, int) | size | (width, height) of the InputText Element |
|
| (int, int) | size | (width, height) of the InputText Element |
|
||||||
| Tuple[str, str] | button_color | button color (foreground, background) |
|
| Tuple[str, str] or str | button_color | button color (foreground, background) |
|
||||||
| str | background_color | color of background |
|
| str | background_color | color of background |
|
||||||
| str | text_color | color of the text |
|
| str | text_color | color of the text |
|
||||||
| Union[bytes, str] | icon | filename or base64 string to be used for the window's icon |
|
| Union[bytes, str] | icon | filename or base64 string to be used for the window's icon |
|
||||||
|
@ -1793,6 +1804,7 @@ Parameter Descriptions:
|
||||||
| Tuple[int, int] | location | Location of upper left corner of the window |
|
| Tuple[int, int] | location | Location of upper left corner of the window |
|
||||||
| str | initial_folder | location in filesystem to begin browsing |
|
| str | initial_folder | location in filesystem to begin browsing |
|
||||||
| str) or (bytes | image | Image to include at the top of the popup window |
|
| str) or (bytes | image | Image to include at the top of the popup window |
|
||||||
|
| bool | modal | If True then makes the popup will behave like a Modal window... all other windows are non-operational until this one is closed. Default = False |
|
||||||
| Union[str, None] | **RETURN** | string representing the path chosen, None if cancelled or window closed with X
|
| Union[str, None] | **RETURN** | string representing the path chosen, None if cancelled or window closed with X
|
||||||
|
|
||||||
This is a typical call
|
This is a typical call
|
||||||
|
@ -1879,11 +1891,11 @@ Parameter Descriptions:
|
||||||
| str | title | text to display in eleemnt |
|
| str | title | text to display in eleemnt |
|
||||||
| int | current_value | current value |
|
| int | current_value | current value |
|
||||||
| int | max_value | max value of QuickMeter |
|
| int | max_value | max value of QuickMeter |
|
||||||
| Union[str, int, tuple] | key | Used to differentiate between mutliple meters. Used to cancel meter early. Now optional as there is a default value for single meters |
|
| Union[str, int, tuple, object] | key | Used to differentiate between mutliple meters. Used to cancel meter early. Now optional as there is a default value for single meters |
|
||||||
| Any | *args | stuff to output |
|
| Any | *args | stuff to output |
|
||||||
| str | orientation | 'horizontal' or 'vertical' ('h' or 'v' work) (Default value = 'vertical' / 'v') |
|
| str | orientation | 'horizontal' or 'vertical' ('h' or 'v' work) (Default value = 'vertical' / 'v') |
|
||||||
| Tuple(str, str) | bar_color | color of a bar line |
|
| Tuple(str, str) | bar_color | color of a bar line |
|
||||||
| Tuple[str, str] | button_color | button color (foreground, background) |
|
| Tuple[str, str] or str | button_color | button color (foreground, background) |
|
||||||
| (int, int) | size | (w,h) w=characters-wide, h=rows-high (Default value = DEFAULT_PROGRESS_BAR_SIZE) |
|
| (int, int) | size | (w,h) w=characters-wide, h=rows-high (Default value = DEFAULT_PROGRESS_BAR_SIZE) |
|
||||||
| int | border_width | width of border around element |
|
| int | border_width | width of border around element |
|
||||||
| bool | grab_anywhere | If True: can grab anywhere to move the window (Default = False) |
|
| bool | grab_anywhere | If True: can grab anywhere to move the window (Default = False) |
|
||||||
|
@ -7322,6 +7334,56 @@ Selective control over tk 8.6.9 treeview color patch
|
||||||
* Can enable the patched code by calling set_options
|
* Can enable the patched code by calling set_options
|
||||||
* To enable set parameter enable_treeview_869_patch = True (defaults to false)
|
* To enable set parameter enable_treeview_869_patch = True (defaults to false)
|
||||||
|
|
||||||
|
## 4.25.0 PySimpleGUI 17-Jul-2020
|
||||||
|
|
||||||
|
Biggest / most impactful set of changes in a while (fingers crossed)
|
||||||
|
Modal windows
|
||||||
|
Multithreaded Window.write_event_value method
|
||||||
|
stdout re-route to any Multiline
|
||||||
|
table/tree highlights
|
||||||
|
k element parameter
|
||||||
|
|
||||||
|
* New "k" parameter for all elements.
|
||||||
|
* Same as "key"
|
||||||
|
* Created so layouts can be even more compact if desired
|
||||||
|
* New docstring for keys (basically anything except a list)
|
||||||
|
* Popups
|
||||||
|
* New text wrap behavior. Will wrap text between \n in user's string
|
||||||
|
* All popups are now "modal" unless they are non-blocking (can be turned off using new parameter)
|
||||||
|
* New button color and table/tree highlight color format
|
||||||
|
* Colors can still be tuple (text, background)
|
||||||
|
* Can also be a single string with format "text on background" (e.g. "white on red")
|
||||||
|
* Multiline
|
||||||
|
* Automatically refresh window when updating multiline or output elements
|
||||||
|
* For cprint use Multiline's autoscroll setting
|
||||||
|
* New autoscroll parameter in Multiline.print
|
||||||
|
* New parameters to make the print and cprint stuff much easier
|
||||||
|
* write_only=False (so that it's not returned when read)
|
||||||
|
* auto_refresh=False
|
||||||
|
* reroute_stdout=False
|
||||||
|
* reroute_stderr=False
|
||||||
|
* reroute_cprint=False (removes need to call the cprint cprint_set_output_destination function)
|
||||||
|
* Table / Tree Elements
|
||||||
|
* Re-enabled the tk 8.6.9 background color fix again
|
||||||
|
* selected_row_colors=(None, None) - tuple or string
|
||||||
|
* Automatically sets the selected row color based on the theme colors! (uses the button color)
|
||||||
|
* Can use 2 other constants for colors
|
||||||
|
* OLD_TABLE_TREE_SELECTED_ROW_COLORS - ('#FFFFFF', '#4A6984') the old blueish color
|
||||||
|
* ALTERNATE_TABLE_AND_TREE_SELECTED_ROW_COLORS - (SystemHighlightText, SystemHighlight)
|
||||||
|
* Tree image caching happens at the element level now
|
||||||
|
* Window
|
||||||
|
* make_modal - new method to turn a window into a modal window
|
||||||
|
* modal parameter when window is created. Default is False
|
||||||
|
* write_event_value - new method that can be called by threads! This will "queue" an event and a value for the next window.read()
|
||||||
|
* Display an error popup if read a closed window 100+ times (stops you from eating 100% of the CPU time)
|
||||||
|
* was_closed method added - returns True if a window has been closed
|
||||||
|
* Combo - don't select first entry if updated with a new set of values
|
||||||
|
* Tooltip - fix for stuck-on tooltips
|
||||||
|
* New theme_previewer with scrollbars. 3 new parameters
|
||||||
|
* cprint - now has all parameters shown in docstring versus using *args **kwargs
|
||||||
|
* New global variable __tclversion_detailed__ - string with full tkinter version (3 numbers instead of 2)
|
||||||
|
* Warning is displayed if tcl version is found to be 8.5.
|
||||||
|
|
||||||
### Upcoming
|
### Upcoming
|
||||||
|
|
||||||
There will always be overlapping work as the ports will never actually be "complete" as there's always something new that can be built. However there's a definition for the base functionality for PySimpleGUI. This is what is being strived for with the current ports that are underway.
|
There will always be overlapping work as the ports will never actually be "complete" as there's always something new that can be built. However there's a definition for the base functionality for PySimpleGUI. This is what is being strived for with the current ports that are underway.
|
||||||
|
|
88
readme.md
88
readme.md
|
@ -1448,7 +1448,8 @@ Popup(args=*<1 or N object>,
|
||||||
keep_on_top=False,
|
keep_on_top=False,
|
||||||
location=(None, None),
|
location=(None, None),
|
||||||
any_key_closes=False,
|
any_key_closes=False,
|
||||||
image=None)
|
image=None,
|
||||||
|
modal=True)
|
||||||
```
|
```
|
||||||
|
|
||||||
Parameter Descriptions:
|
Parameter Descriptions:
|
||||||
|
@ -1474,6 +1475,7 @@ Parameter Descriptions:
|
||||||
| bool | keep_on_top | If True the window will remain above all current windows |
|
| bool | keep_on_top | If True the window will remain above all current windows |
|
||||||
| bool | any_key_closes | If True then will turn on return_keyboard_events for the window which will cause window to close as soon as any key is pressed. Normally the return key only will close the window. Default is false. |
|
| bool | any_key_closes | If True then will turn on return_keyboard_events for the window which will cause window to close as soon as any key is pressed. Normally the return key only will close the window. Default is false. |
|
||||||
| str) or (bytes | image | Image to include at the top of the popup window |
|
| str) or (bytes | image | Image to include at the top of the popup window |
|
||||||
|
| bool | modal | If True then makes the popup will behave like a Modal window... all other windows are non-operational until this one is closed. Default = False |
|
||||||
| Union[str, None] | **RETURN** | Returns text of the button that was pressed. None will be returned if user closed window with X
|
| Union[str, None] | **RETURN** | Returns text of the button that was pressed. None will be returned if user closed window with X
|
||||||
|
|
||||||
The other output Popups are variations on parameters. Usually the button_type parameter is the primary one changed.
|
The other output Popups are variations on parameters. Usually the button_type parameter is the primary one changed.
|
||||||
|
@ -1513,7 +1515,8 @@ popup_scrolled(args=*<1 or N object>,
|
||||||
grab_anywhere=False,
|
grab_anywhere=False,
|
||||||
keep_on_top=False,
|
keep_on_top=False,
|
||||||
font=None,
|
font=None,
|
||||||
image=None)
|
image=None,
|
||||||
|
modal=True)
|
||||||
```
|
```
|
||||||
|
|
||||||
Parameter Descriptions:
|
Parameter Descriptions:
|
||||||
|
@ -1522,7 +1525,7 @@ Parameter Descriptions:
|
||||||
|--|--|--|
|
|--|--|--|
|
||||||
| Any | *args | Variable number of items to display |
|
| Any | *args | Variable number of items to display |
|
||||||
| str | title | Title to display in the window. |
|
| str | title | Title to display in the window. |
|
||||||
| Tuple[str, str] | button_color | button color (foreground, background) |
|
| Tuple[str, str] or str | button_color | button color (foreground, background) |
|
||||||
| bool | yes_no | If True, displays Yes and No buttons instead of Ok |
|
| bool | yes_no | If True, displays Yes and No buttons instead of Ok |
|
||||||
| bool | auto_close | if True window will close itself |
|
| bool | auto_close | if True window will close itself |
|
||||||
| Union[int, float] | auto_close_duration | Older versions only accept int. Time in seconds until window will close |
|
| Union[int, float] | auto_close_duration | Older versions only accept int. Time in seconds until window will close |
|
||||||
|
@ -1536,6 +1539,7 @@ Parameter Descriptions:
|
||||||
| bool | keep_on_top | If True the window will remain above all current windows |
|
| bool | keep_on_top | If True the window will remain above all current windows |
|
||||||
| Union[str, Tuple[str, int]] | font | specifies the font family, size, etc |
|
| Union[str, Tuple[str, int]] | font | specifies the font family, size, etc |
|
||||||
| str) or (bytes | image | Image to include at the top of the popup window |
|
| str) or (bytes | image | Image to include at the top of the popup window |
|
||||||
|
| bool | modal | If True then makes the popup will behave like a Modal window... all other windows are non-operational until this one is closed. Default = False |
|
||||||
| Union[str, None, TIMEOUT_KEY] | **RETURN** | Returns text of the button that was pressed. None will be returned if user closed window with X
|
| Union[str, None, TIMEOUT_KEY] | **RETURN** | Returns text of the button that was pressed. None will be returned if user closed window with X
|
||||||
|
|
||||||
Typical usage:
|
Typical usage:
|
||||||
|
@ -1577,7 +1581,8 @@ popup_no_wait(args=*<1 or N object>,
|
||||||
grab_anywhere=False,
|
grab_anywhere=False,
|
||||||
keep_on_top=False,
|
keep_on_top=False,
|
||||||
location=(None, None),
|
location=(None, None),
|
||||||
image=None)
|
image=None,
|
||||||
|
modal=False)
|
||||||
```
|
```
|
||||||
|
|
||||||
Parameter Descriptions:
|
Parameter Descriptions:
|
||||||
|
@ -1587,7 +1592,7 @@ Parameter Descriptions:
|
||||||
| Any | *args | Variable number of items to display |
|
| Any | *args | Variable number of items to display |
|
||||||
| str | title | Title to display in the window. |
|
| str | title | Title to display in the window. |
|
||||||
| int | button_type | Determines which pre-defined buttons will be shown (Default value = POPUP_BUTTONS_OK). |
|
| int | button_type | Determines which pre-defined buttons will be shown (Default value = POPUP_BUTTONS_OK). |
|
||||||
| Tuple[str, str] | button_color | button color (foreground, background) |
|
| Tuple[str, str] or str | button_color | button color (foreground, background) |
|
||||||
| str | background_color | color of background |
|
| str | background_color | color of background |
|
||||||
| str | text_color | color of the text |
|
| str | text_color | color of the text |
|
||||||
| bool | auto_close | if True window will close itself |
|
| bool | auto_close | if True window will close itself |
|
||||||
|
@ -1600,6 +1605,7 @@ Parameter Descriptions:
|
||||||
| bool | grab_anywhere | If True: can grab anywhere to move the window (Default = False) |
|
| bool | grab_anywhere | If True: can grab anywhere to move the window (Default = False) |
|
||||||
| Tuple[int, int] | location | Location of upper left corner of the window |
|
| Tuple[int, int] | location | Location of upper left corner of the window |
|
||||||
| str) or (bytes | image | Image to include at the top of the popup window |
|
| str) or (bytes | image | Image to include at the top of the popup window |
|
||||||
|
| bool | modal | If True then makes the popup will behave like a Modal window... all other windows are non-operational until this one is closed. Default = False |
|
||||||
| Union[str, None] | **RETURN** | Reason for popup closing
|
| Union[str, None] | **RETURN** | Reason for popup closing
|
||||||
|
|
||||||
The `popup` call `popup_no_wait` or `popup_non_blocking` will create a popup window and then immediately return control back to you. You can turn other popup calls into non-blocking popups if they have a `non_blocking` parameter. Setting `non_blocking` to True will cause the function to return immediately rather than waiting for the window to be closed.
|
The `popup` call `popup_no_wait` or `popup_non_blocking` will create a popup window and then immediately return control back to you. You can turn other popup calls into non-blocking popups if they have a `non_blocking` parameter. Setting `non_blocking` to True will cause the function to return immediately rather than waiting for the window to be closed.
|
||||||
|
@ -1640,7 +1646,8 @@ popup_get_text(message,
|
||||||
grab_anywhere=False,
|
grab_anywhere=False,
|
||||||
keep_on_top=False,
|
keep_on_top=False,
|
||||||
location=(None, None),
|
location=(None, None),
|
||||||
image=None)
|
image=None,
|
||||||
|
modal=True)
|
||||||
```
|
```
|
||||||
|
|
||||||
Parameter Descriptions:
|
Parameter Descriptions:
|
||||||
|
@ -1652,7 +1659,7 @@ Parameter Descriptions:
|
||||||
| str | default_text | default value to put into input area |
|
| str | default_text | default value to put into input area |
|
||||||
| str | password_char | character to be shown instead of actually typed characters |
|
| str | password_char | character to be shown instead of actually typed characters |
|
||||||
| (int, int) | size | (width, height) of the InputText Element |
|
| (int, int) | size | (width, height) of the InputText Element |
|
||||||
| Tuple[str, str] | button_color | Color of the button (text, background) |
|
| Tuple[str, str] or str | button_color | Color of the button (text, background) |
|
||||||
| str | background_color | background color of the entire window |
|
| str | background_color | background color of the entire window |
|
||||||
| str | text_color | color of the message text |
|
| str | text_color | color of the message text |
|
||||||
| Union[bytes, str] | icon | filename or base64 string to be used for the window's icon |
|
| Union[bytes, str] | icon | filename or base64 string to be used for the window's icon |
|
||||||
|
@ -1662,6 +1669,7 @@ Parameter Descriptions:
|
||||||
| bool | keep_on_top | If True the window will remain above all current windows |
|
| bool | keep_on_top | If True the window will remain above all current windows |
|
||||||
| Tuple[int, int] | location | (x,y) Location on screen to display the upper left corner of window |
|
| Tuple[int, int] | location | (x,y) Location on screen to display the upper left corner of window |
|
||||||
| str) or (bytes | image | Image to include at the top of the popup window |
|
| str) or (bytes | image | Image to include at the top of the popup window |
|
||||||
|
| bool | modal | If True then makes the popup will behave like a Modal window... all other windows are non-operational until this one is closed. Default = False |
|
||||||
| Union[str, None] | **RETURN** | Text entered or None if window was closed or cancel button clicked
|
| Union[str, None] | **RETURN** | Text entered or None if window was closed or cancel button clicked
|
||||||
|
|
||||||
```python
|
```python
|
||||||
|
@ -1700,7 +1708,8 @@ popup_get_file(message,
|
||||||
keep_on_top=False,
|
keep_on_top=False,
|
||||||
location=(None, None),
|
location=(None, None),
|
||||||
initial_folder=None,
|
initial_folder=None,
|
||||||
image=None)
|
image=None,
|
||||||
|
modal=True)
|
||||||
```
|
```
|
||||||
|
|
||||||
Parameter Descriptions:
|
Parameter Descriptions:
|
||||||
|
@ -1716,7 +1725,7 @@ Parameter Descriptions:
|
||||||
| Tuple[Tuple[str,str]] | file_types | List of extensions to show using wildcards. All files (the default) = (("ALL Files", "*.*"),) |
|
| Tuple[Tuple[str,str]] | file_types | List of extensions to show using wildcards. All files (the default) = (("ALL Files", "*.*"),) |
|
||||||
| bool | no_window | if True, no PySimpleGUI window will be shown. Instead just the tkinter dialog is shown |
|
| bool | no_window | if True, no PySimpleGUI window will be shown. Instead just the tkinter dialog is shown |
|
||||||
| (int, int) | size | (width, height) of the InputText Element |
|
| (int, int) | size | (width, height) of the InputText Element |
|
||||||
| Tuple[str, str] | button_color | Color of the button (text, background) |
|
| Tuple[str, str] or str | button_color | Color of the button (text, background) |
|
||||||
| str | background_color | background color of the entire window |
|
| str | background_color | background color of the entire window |
|
||||||
| str | text_color | color of the text |
|
| str | text_color | color of the text |
|
||||||
| Union[bytes, str] | icon | filename or base64 string to be used for the window's icon |
|
| Union[bytes, str] | icon | filename or base64 string to be used for the window's icon |
|
||||||
|
@ -1727,6 +1736,7 @@ Parameter Descriptions:
|
||||||
| Tuple[int, int] | location | Location of upper left corner of the window |
|
| Tuple[int, int] | location | Location of upper left corner of the window |
|
||||||
| str | initial_folder | location in filesystem to begin browsing |
|
| str | initial_folder | location in filesystem to begin browsing |
|
||||||
| str) or (bytes | image | Image to include at the top of the popup window |
|
| str) or (bytes | image | Image to include at the top of the popup window |
|
||||||
|
| bool | modal | If True then makes the popup will behave like a Modal window... all other windows are non-operational until this one is closed. Default = False |
|
||||||
| Union[str, None] | **RETURN** | string representing the file(s) chosen, None if cancelled or window closed with X
|
| Union[str, None] | **RETURN** | string representing the file(s) chosen, None if cancelled or window closed with X
|
||||||
|
|
||||||
If configured as an Open File Popup then (save_as is not True) the dialog box will look like this.
|
If configured as an Open File Popup then (save_as is not True) the dialog box will look like this.
|
||||||
|
@ -1770,7 +1780,8 @@ popup_get_folder(message,
|
||||||
keep_on_top=False,
|
keep_on_top=False,
|
||||||
location=(None, None),
|
location=(None, None),
|
||||||
initial_folder=None,
|
initial_folder=None,
|
||||||
image=None)
|
image=None,
|
||||||
|
modal=True)
|
||||||
```
|
```
|
||||||
|
|
||||||
Parameter Descriptions:
|
Parameter Descriptions:
|
||||||
|
@ -1782,7 +1793,7 @@ Parameter Descriptions:
|
||||||
| str | default_path | path to display to user as starting point (filled into the input field) |
|
| str | default_path | path to display to user as starting point (filled into the input field) |
|
||||||
| bool | no_window | if True, no PySimpleGUI window will be shown. Instead just the tkinter dialog is shown |
|
| bool | no_window | if True, no PySimpleGUI window will be shown. Instead just the tkinter dialog is shown |
|
||||||
| (int, int) | size | (width, height) of the InputText Element |
|
| (int, int) | size | (width, height) of the InputText Element |
|
||||||
| Tuple[str, str] | button_color | button color (foreground, background) |
|
| Tuple[str, str] or str | button_color | button color (foreground, background) |
|
||||||
| str | background_color | color of background |
|
| str | background_color | color of background |
|
||||||
| str | text_color | color of the text |
|
| str | text_color | color of the text |
|
||||||
| Union[bytes, str] | icon | filename or base64 string to be used for the window's icon |
|
| Union[bytes, str] | icon | filename or base64 string to be used for the window's icon |
|
||||||
|
@ -1793,6 +1804,7 @@ Parameter Descriptions:
|
||||||
| Tuple[int, int] | location | Location of upper left corner of the window |
|
| Tuple[int, int] | location | Location of upper left corner of the window |
|
||||||
| str | initial_folder | location in filesystem to begin browsing |
|
| str | initial_folder | location in filesystem to begin browsing |
|
||||||
| str) or (bytes | image | Image to include at the top of the popup window |
|
| str) or (bytes | image | Image to include at the top of the popup window |
|
||||||
|
| bool | modal | If True then makes the popup will behave like a Modal window... all other windows are non-operational until this one is closed. Default = False |
|
||||||
| Union[str, None] | **RETURN** | string representing the path chosen, None if cancelled or window closed with X
|
| Union[str, None] | **RETURN** | string representing the path chosen, None if cancelled or window closed with X
|
||||||
|
|
||||||
This is a typical call
|
This is a typical call
|
||||||
|
@ -1879,11 +1891,11 @@ Parameter Descriptions:
|
||||||
| str | title | text to display in eleemnt |
|
| str | title | text to display in eleemnt |
|
||||||
| int | current_value | current value |
|
| int | current_value | current value |
|
||||||
| int | max_value | max value of QuickMeter |
|
| int | max_value | max value of QuickMeter |
|
||||||
| Union[str, int, tuple] | key | Used to differentiate between mutliple meters. Used to cancel meter early. Now optional as there is a default value for single meters |
|
| Union[str, int, tuple, object] | key | Used to differentiate between mutliple meters. Used to cancel meter early. Now optional as there is a default value for single meters |
|
||||||
| Any | *args | stuff to output |
|
| Any | *args | stuff to output |
|
||||||
| str | orientation | 'horizontal' or 'vertical' ('h' or 'v' work) (Default value = 'vertical' / 'v') |
|
| str | orientation | 'horizontal' or 'vertical' ('h' or 'v' work) (Default value = 'vertical' / 'v') |
|
||||||
| Tuple(str, str) | bar_color | color of a bar line |
|
| Tuple(str, str) | bar_color | color of a bar line |
|
||||||
| Tuple[str, str] | button_color | button color (foreground, background) |
|
| Tuple[str, str] or str | button_color | button color (foreground, background) |
|
||||||
| (int, int) | size | (w,h) w=characters-wide, h=rows-high (Default value = DEFAULT_PROGRESS_BAR_SIZE) |
|
| (int, int) | size | (w,h) w=characters-wide, h=rows-high (Default value = DEFAULT_PROGRESS_BAR_SIZE) |
|
||||||
| int | border_width | width of border around element |
|
| int | border_width | width of border around element |
|
||||||
| bool | grab_anywhere | If True: can grab anywhere to move the window (Default = False) |
|
| bool | grab_anywhere | If True: can grab anywhere to move the window (Default = False) |
|
||||||
|
@ -7322,6 +7334,56 @@ Selective control over tk 8.6.9 treeview color patch
|
||||||
* Can enable the patched code by calling set_options
|
* Can enable the patched code by calling set_options
|
||||||
* To enable set parameter enable_treeview_869_patch = True (defaults to false)
|
* To enable set parameter enable_treeview_869_patch = True (defaults to false)
|
||||||
|
|
||||||
|
## 4.25.0 PySimpleGUI 17-Jul-2020
|
||||||
|
|
||||||
|
Biggest / most impactful set of changes in a while (fingers crossed)
|
||||||
|
Modal windows
|
||||||
|
Multithreaded Window.write_event_value method
|
||||||
|
stdout re-route to any Multiline
|
||||||
|
table/tree highlights
|
||||||
|
k element parameter
|
||||||
|
|
||||||
|
* New "k" parameter for all elements.
|
||||||
|
* Same as "key"
|
||||||
|
* Created so layouts can be even more compact if desired
|
||||||
|
* New docstring for keys (basically anything except a list)
|
||||||
|
* Popups
|
||||||
|
* New text wrap behavior. Will wrap text between \n in user's string
|
||||||
|
* All popups are now "modal" unless they are non-blocking (can be turned off using new parameter)
|
||||||
|
* New button color and table/tree highlight color format
|
||||||
|
* Colors can still be tuple (text, background)
|
||||||
|
* Can also be a single string with format "text on background" (e.g. "white on red")
|
||||||
|
* Multiline
|
||||||
|
* Automatically refresh window when updating multiline or output elements
|
||||||
|
* For cprint use Multiline's autoscroll setting
|
||||||
|
* New autoscroll parameter in Multiline.print
|
||||||
|
* New parameters to make the print and cprint stuff much easier
|
||||||
|
* write_only=False (so that it's not returned when read)
|
||||||
|
* auto_refresh=False
|
||||||
|
* reroute_stdout=False
|
||||||
|
* reroute_stderr=False
|
||||||
|
* reroute_cprint=False (removes need to call the cprint cprint_set_output_destination function)
|
||||||
|
* Table / Tree Elements
|
||||||
|
* Re-enabled the tk 8.6.9 background color fix again
|
||||||
|
* selected_row_colors=(None, None) - tuple or string
|
||||||
|
* Automatically sets the selected row color based on the theme colors! (uses the button color)
|
||||||
|
* Can use 2 other constants for colors
|
||||||
|
* OLD_TABLE_TREE_SELECTED_ROW_COLORS - ('#FFFFFF', '#4A6984') the old blueish color
|
||||||
|
* ALTERNATE_TABLE_AND_TREE_SELECTED_ROW_COLORS - (SystemHighlightText, SystemHighlight)
|
||||||
|
* Tree image caching happens at the element level now
|
||||||
|
* Window
|
||||||
|
* make_modal - new method to turn a window into a modal window
|
||||||
|
* modal parameter when window is created. Default is False
|
||||||
|
* write_event_value - new method that can be called by threads! This will "queue" an event and a value for the next window.read()
|
||||||
|
* Display an error popup if read a closed window 100+ times (stops you from eating 100% of the CPU time)
|
||||||
|
* was_closed method added - returns True if a window has been closed
|
||||||
|
* Combo - don't select first entry if updated with a new set of values
|
||||||
|
* Tooltip - fix for stuck-on tooltips
|
||||||
|
* New theme_previewer with scrollbars. 3 new parameters
|
||||||
|
* cprint - now has all parameters shown in docstring versus using *args **kwargs
|
||||||
|
* New global variable __tclversion_detailed__ - string with full tkinter version (3 numbers instead of 2)
|
||||||
|
* Warning is displayed if tcl version is found to be 8.5.
|
||||||
|
|
||||||
### Upcoming
|
### Upcoming
|
||||||
|
|
||||||
There will always be overlapping work as the ports will never actually be "complete" as there's always something new that can be built. However there's a definition for the base functionality for PySimpleGUI. This is what is being strived for with the current ports that are underway.
|
There will always be overlapping work as the ports will never actually be "complete" as there's always something new that can be built. However there's a definition for the base functionality for PySimpleGUI. This is what is being strived for with the current ports that are underway.
|
||||||
|
|
Loading…
Reference in New Issue