Release 4.59.0
This commit is contained in:
parent
cba19a515e
commit
3261ec15fa
|
@ -1,14 +1,11 @@
|
||||||
#!/usr/bin/python3
|
#!/usr/bin/python3
|
||||||
|
|
||||||
version = __version__ = "4.58.0.2 Unreleased"
|
version = __version__ = "4.59.0 Released 5-Apr-2022"
|
||||||
|
|
||||||
_change_log = """
|
_change_log = """
|
||||||
Changelog since 4.58.0 released to PyPI on 4-Apr-2022
|
Changelog since 4.59.0 released to PyPI on 5-Apr-2022
|
||||||
|
|
||||||
|
|
||||||
4.58.0.1
|
|
||||||
Removed ttk theme from the test harness. Forgot that I had changed it for testing.
|
|
||||||
4.58.0.2
|
|
||||||
Fixed bug where disabled state was not corretly saved in update methods, causing events to not be generated (Thank you Jason, again!)
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
__version__ = version.split()[0] # For PEP 396 and PEP 345
|
__version__ = version.split()[0] # For PEP 396 and PEP 345
|
||||||
|
@ -522,6 +519,7 @@ TABLE_SELECT_MODE_EXTENDED = tk.EXTENDED
|
||||||
DEFAULT_TABLE_SELECT_MODE = TABLE_SELECT_MODE_EXTENDED
|
DEFAULT_TABLE_SELECT_MODE = TABLE_SELECT_MODE_EXTENDED
|
||||||
TABLE_CLICKED_INDICATOR = '+CLICKED+' # Part of the tuple returned as an event when a Table element has click events enabled
|
TABLE_CLICKED_INDICATOR = '+CLICKED+' # Part of the tuple returned as an event when a Table element has click events enabled
|
||||||
DEFAULT_MODAL_WINDOWS_ENABLED = True
|
DEFAULT_MODAL_WINDOWS_ENABLED = True
|
||||||
|
DEFAULT_MODAL_WINDOWS_FORCED = False
|
||||||
|
|
||||||
TAB_LOCATION_TOP = 'top'
|
TAB_LOCATION_TOP = 'top'
|
||||||
TAB_LOCATION_TOP_LEFT = 'topleft'
|
TAB_LOCATION_TOP_LEFT = 'topleft'
|
||||||
|
@ -11108,7 +11106,8 @@ class Window:
|
||||||
return
|
return
|
||||||
|
|
||||||
# if modal windows have been disabled globally
|
# if modal windows have been disabled globally
|
||||||
if not DEFAULT_MODAL_WINDOWS_ENABLED:
|
if not DEFAULT_MODAL_WINDOWS_ENABLED and not DEFAULT_MODAL_WINDOWS_FORCED:
|
||||||
|
# if not DEFAULT_MODAL_WINDOWS_ENABLED:
|
||||||
return
|
return
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
@ -16332,7 +16331,7 @@ def StartupTK(window):
|
||||||
window.TKroot.protocol("WM_DESTROY_WINDOW", window._OnClosingCallback)
|
window.TKroot.protocol("WM_DESTROY_WINDOW", window._OnClosingCallback)
|
||||||
window.TKroot.protocol("WM_DELETE_WINDOW", window._OnClosingCallback)
|
window.TKroot.protocol("WM_DELETE_WINDOW", window._OnClosingCallback)
|
||||||
|
|
||||||
if window.modal:
|
if window.modal or DEFAULT_MODAL_WINDOWS_FORCED:
|
||||||
window.make_modal()
|
window.make_modal()
|
||||||
|
|
||||||
# window.TKroot.bind("<Configure>", window._config_callback)
|
# window.TKroot.bind("<Configure>", window._config_callback)
|
||||||
|
@ -17090,7 +17089,7 @@ def set_options(icon=None, button_color=None, element_size=(None, None), button_
|
||||||
window_location=(None, None), error_button_color=(None, None), tooltip_time=None, tooltip_font=None, use_ttk_buttons=None, ttk_theme=None,
|
window_location=(None, None), error_button_color=(None, None), tooltip_time=None, tooltip_font=None, use_ttk_buttons=None, ttk_theme=None,
|
||||||
suppress_error_popups=None, suppress_raise_key_errors=None, suppress_key_guessing=None,warn_button_key_duplicates=False, enable_treeview_869_patch=None,
|
suppress_error_popups=None, suppress_raise_key_errors=None, suppress_key_guessing=None,warn_button_key_duplicates=False, enable_treeview_869_patch=None,
|
||||||
enable_mac_notitlebar_patch=None, use_custom_titlebar=None, titlebar_background_color=None, titlebar_text_color=None, titlebar_font=None,
|
enable_mac_notitlebar_patch=None, use_custom_titlebar=None, titlebar_background_color=None, titlebar_text_color=None, titlebar_font=None,
|
||||||
titlebar_icon=None, user_settings_path=None, pysimplegui_settings_path=None, pysimplegui_settings_filename=None, keep_on_top=None, dpi_awareness=None, scaling=None, disable_modal_windows=None, tooltip_offset=(None, None)):
|
titlebar_icon=None, user_settings_path=None, pysimplegui_settings_path=None, pysimplegui_settings_filename=None, keep_on_top=None, dpi_awareness=None, scaling=None, disable_modal_windows=None, force_modal_windows=None, tooltip_offset=(None, None)):
|
||||||
"""
|
"""
|
||||||
:param icon: Can be either a filename or Base64 value. For Windows if filename, it MUST be ICO format. For Linux, must NOT be ICO. Most portable is to use a Base64 of a PNG file. This works universally across all OS's
|
:param icon: Can be either a filename or Base64 value. For Windows if filename, it MUST be ICO format. For Linux, must NOT be ICO. Most portable is to use a Base64 of a PNG file. This works universally across all OS's
|
||||||
:type icon: bytes | str
|
:type icon: bytes | str
|
||||||
|
@ -17198,8 +17197,10 @@ def set_options(icon=None, button_color=None, element_size=(None, None), button_
|
||||||
:type dpi_awareness: (bool)
|
:type dpi_awareness: (bool)
|
||||||
:param scaling: Sets the default scaling for all windows including popups, etc.
|
:param scaling: Sets the default scaling for all windows including popups, etc.
|
||||||
:type scaling: (float)
|
:type scaling: (float)
|
||||||
:param disable_modal_windows: If True then all windows, including popups, will not be modal windows
|
:param disable_modal_windows: If True then all windows, including popups, will not be modal windows (unless they've been set to FORCED using another option)
|
||||||
:type disable_modal_windows: (bool)
|
:type disable_modal_windows: (bool)
|
||||||
|
:param force_modal_windows: If True then all windows will be modal (the disable option will be ignored... all windows will be forced to be modal)
|
||||||
|
:type force_modal_windows: (bool)
|
||||||
:param tooltip_offset: Offset to use for tooltips as a tuple. These values will be added to the mouse location when the widget was entered.
|
:param tooltip_offset: Offset to use for tooltips as a tuple. These values will be added to the mouse location when the widget was entered.
|
||||||
:type tooltip_offset: ((None, None) | (int, int))
|
:type tooltip_offset: ((None, None) | (int, int))
|
||||||
:return: None
|
:return: None
|
||||||
|
@ -17258,6 +17259,7 @@ def set_options(icon=None, button_color=None, element_size=(None, None), button_
|
||||||
global DEFAULT_KEEP_ON_TOP
|
global DEFAULT_KEEP_ON_TOP
|
||||||
global DEFAULT_SCALING
|
global DEFAULT_SCALING
|
||||||
global DEFAULT_MODAL_WINDOWS_ENABLED
|
global DEFAULT_MODAL_WINDOWS_ENABLED
|
||||||
|
global DEFAULT_MODAL_WINDOWS_FORCED
|
||||||
global DEFAULT_TOOLTIP_OFFSET
|
global DEFAULT_TOOLTIP_OFFSET
|
||||||
global _pysimplegui_user_settings
|
global _pysimplegui_user_settings
|
||||||
# global _my_windows
|
# global _my_windows
|
||||||
|
@ -17437,6 +17439,11 @@ def set_options(icon=None, button_color=None, element_size=(None, None), button_
|
||||||
if disable_modal_windows is not None:
|
if disable_modal_windows is not None:
|
||||||
DEFAULT_MODAL_WINDOWS_ENABLED = not disable_modal_windows
|
DEFAULT_MODAL_WINDOWS_ENABLED = not disable_modal_windows
|
||||||
|
|
||||||
|
if force_modal_windows is not None:
|
||||||
|
DEFAULT_MODAL_WINDOWS_FORCED = force_modal_windows
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if tooltip_offset != (None, None):
|
if tooltip_offset != (None, None):
|
||||||
DEFAULT_TOOLTIP_OFFSET = tooltip_offset
|
DEFAULT_TOOLTIP_OFFSET = tooltip_offset
|
||||||
|
|
||||||
|
@ -19908,7 +19915,7 @@ def popup_get_date(start_mon=None, start_day=None, start_year=None, begin_at_sun
|
||||||
prev_choice = (week, day)
|
prev_choice = (week, day)
|
||||||
break
|
break
|
||||||
|
|
||||||
if modal:
|
if modal or DEFAULT_MODAL_WINDOWS_FORCED:
|
||||||
window.make_modal()
|
window.make_modal()
|
||||||
|
|
||||||
while True: # Event Loop
|
while True: # Event Loop
|
||||||
|
@ -22569,7 +22576,7 @@ def _github_issue_post_validate(values, checklist, issue_types):
|
||||||
issue_type = itype
|
issue_type = itype
|
||||||
break
|
break
|
||||||
if issue_type is None:
|
if issue_type is None:
|
||||||
popup_error('Must choose issue type')
|
popup_error('Must choose issue type', keep_on_top=True)
|
||||||
return False
|
return False
|
||||||
if values['-OS WIN-']:
|
if values['-OS WIN-']:
|
||||||
os_ver = values['-OS WIN VER-']
|
os_ver = values['-OS WIN VER-']
|
||||||
|
@ -22580,28 +22587,28 @@ def _github_issue_post_validate(values, checklist, issue_types):
|
||||||
elif values['-OS OTHER-']:
|
elif values['-OS OTHER-']:
|
||||||
os_ver = values['-OS OTHER VER-']
|
os_ver = values['-OS OTHER VER-']
|
||||||
else:
|
else:
|
||||||
popup_error('Must choose Operating System')
|
popup_error('Must choose Operating System', keep_on_top=True)
|
||||||
return False
|
return False
|
||||||
|
|
||||||
if os_ver == '':
|
if os_ver == '':
|
||||||
popup_error('Must fill in an OS Version')
|
popup_error('Must fill in an OS Version', keep_on_top=True)
|
||||||
return False
|
return False
|
||||||
|
|
||||||
checkboxes = any([values[('-CB-', i)] for i in range(len(checklist))])
|
checkboxes = any([values[('-CB-', i)] for i in range(len(checklist))])
|
||||||
if not checkboxes:
|
if not checkboxes:
|
||||||
popup_error('None of the checkboxes were checked.... you need to have tried something...anything...')
|
popup_error('None of the checkboxes were checked.... you need to have tried something...anything...', keep_on_top=True)
|
||||||
return False
|
return False
|
||||||
|
|
||||||
title = values['-TITLE-'].strip()
|
title = values['-TITLE-'].strip()
|
||||||
if len(title) == 0:
|
if len(title) == 0:
|
||||||
popup_error("Title can't be blank")
|
popup_error("Title can't be blank", keep_on_top=True)
|
||||||
return False
|
return False
|
||||||
elif title[1:len(title) - 1] == issue_type:
|
elif title[1:len(title) - 1] == issue_type:
|
||||||
popup_error("Title can't be blank (only the type of issue isn't enough)")
|
popup_error("Title can't be blank (only the type of issue isn't enough)", keep_on_top=True)
|
||||||
return False
|
return False
|
||||||
|
|
||||||
if len(values['-ML DETAILS-']) < 4:
|
if len(values['-ML DETAILS-']) < 4:
|
||||||
popup_error("A little more details would be awesome")
|
popup_error("A little more details would be awesome", keep_on_top=True)
|
||||||
return False
|
return False
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
@ -22791,7 +22798,7 @@ def main_open_github_issue():
|
||||||
'the markdown, copying it to a text file, and then using it later to manually paste into a new issue '
|
'the markdown, copying it to a text file, and then using it later to manually paste into a new issue '
|
||||||
'\n'
|
'\n'
|
||||||
'Are you sure you want to quit?',
|
'Are you sure you want to quit?',
|
||||||
image=EMOJI_BASE64_PONDER,
|
image=EMOJI_BASE64_PONDER, keep_on_top=True
|
||||||
) == 'Yes':
|
) == 'Yes':
|
||||||
break
|
break
|
||||||
if event == WIN_CLOSED:
|
if event == WIN_CLOSED:
|
||||||
|
@ -22817,7 +22824,7 @@ def main_open_github_issue():
|
||||||
issue_type = itype
|
issue_type = itype
|
||||||
break
|
break
|
||||||
if issue_type is None:
|
if issue_type is None:
|
||||||
popup_error('Must choose issue type')
|
popup_error('Must choose issue type', keep_on_top=True)
|
||||||
continue
|
continue
|
||||||
if values['-OS WIN-']:
|
if values['-OS WIN-']:
|
||||||
operating_system = 'Windows'
|
operating_system = 'Windows'
|
||||||
|
@ -22832,7 +22839,7 @@ def main_open_github_issue():
|
||||||
operating_system = 'Other'
|
operating_system = 'Other'
|
||||||
os_ver = values['-OS OTHER VER-']
|
os_ver = values['-OS OTHER VER-']
|
||||||
else:
|
else:
|
||||||
popup_error('Must choose Operating System')
|
popup_error('Must choose Operating System', keep_on_top=True)
|
||||||
continue
|
continue
|
||||||
checkboxes = ['X' if values[('-CB-', i)] else ' ' for i in range(len(checklist))]
|
checkboxes = ['X' if values[('-CB-', i)] else ' ' for i in range(len(checklist))]
|
||||||
|
|
||||||
|
@ -23233,7 +23240,7 @@ def main_global_pysimplegui_settings():
|
||||||
[B('Ok', bind_return_key=True), B('Cancel'), B('Mac Patch Control')],
|
[B('Ok', bind_return_key=True), B('Cancel'), B('Mac Patch Control')],
|
||||||
]
|
]
|
||||||
|
|
||||||
window = Window('Settings', layout, keep_on_top=True)
|
window = Window('Settings', layout, keep_on_top=True, modal=True)
|
||||||
while True:
|
while True:
|
||||||
event, values = window.read()
|
event, values = window.read()
|
||||||
if event in ('Cancel', WIN_CLOSED):
|
if event in ('Cancel', WIN_CLOSED):
|
||||||
|
@ -23624,7 +23631,7 @@ def _create_main_window():
|
||||||
VerLine('{}/{}'.format(tkversion, tclversion), 'TK/TCL Versions'),
|
VerLine('{}/{}'.format(tkversion, tclversion), 'TK/TCL Versions'),
|
||||||
VerLine(tclversion_detailed, 'detailed tkinter version'),
|
VerLine(tclversion_detailed, 'detailed tkinter version'),
|
||||||
VerLine(os.path.dirname(os.path.abspath(__file__)), 'PySimpleGUI Location', size=(40, 2)),
|
VerLine(os.path.dirname(os.path.abspath(__file__)), 'PySimpleGUI Location', size=(40, 2)),
|
||||||
VerLine(sys.version, 'Python Version', size=(40,2)) +[Image(PYTHON_COLORED_HEARTS_BASE64, subsample=3)]], pad=0)
|
VerLine(sys.version, 'Python Version', size=(40,2)) +[Image(PYTHON_COLORED_HEARTS_BASE64, subsample=3, k='-PYTHON HEARTS-', enable_events=True)]], pad=0)
|
||||||
|
|
||||||
layout_bottom = [
|
layout_bottom = [
|
||||||
[B(SYMBOL_DOWN, pad=(0, 0), k='-HIDE TABS-'),
|
[B(SYMBOL_DOWN, pad=(0, 0), k='-HIDE TABS-'),
|
||||||
|
@ -23658,7 +23665,7 @@ def _create_main_window():
|
||||||
right_click_menu=['&Right', ['Right', '!&Click', '&Menu', 'E&xit', 'Properties']],
|
right_click_menu=['&Right', ['Right', '!&Click', '&Menu', 'E&xit', 'Properties']],
|
||||||
# transparent_color= '#9FB8AD',
|
# transparent_color= '#9FB8AD',
|
||||||
resizable=True,
|
resizable=True,
|
||||||
keep_on_top=True,
|
keep_on_top=False,
|
||||||
element_justification='left', # justify contents to the left
|
element_justification='left', # justify contents to the left
|
||||||
metadata='My window metadata',
|
metadata='My window metadata',
|
||||||
finalize=True,
|
finalize=True,
|
||||||
|
@ -23686,6 +23693,8 @@ def main():
|
||||||
"""
|
"""
|
||||||
The PySimpleGUI "Test Harness". This is meant to be a super-quick test of the Elements.
|
The PySimpleGUI "Test Harness". This is meant to be a super-quick test of the Elements.
|
||||||
"""
|
"""
|
||||||
|
forced_modal = DEFAULT_MODAL_WINDOWS_FORCED
|
||||||
|
set_options(force_modal_windows=True)
|
||||||
window = _create_main_window()
|
window = _create_main_window()
|
||||||
set_options(keep_on_top=True)
|
set_options(keep_on_top=True)
|
||||||
graph_elem = window['+GRAPH+']
|
graph_elem = window['+GRAPH+']
|
||||||
|
@ -23727,15 +23736,15 @@ def main():
|
||||||
elif event == '-INSTALL-':
|
elif event == '-INSTALL-':
|
||||||
_upgrade_gui()
|
_upgrade_gui()
|
||||||
elif event == 'Popup':
|
elif event == 'Popup':
|
||||||
popup('This is your basic popup')
|
popup('This is your basic popup', keep_on_top=True)
|
||||||
elif event == 'Get File':
|
elif event == 'Get File':
|
||||||
popup_scrolled('Returned:', popup_get_file('Get File'))
|
popup_scrolled('Returned:', popup_get_file('Get File', keep_on_top=True))
|
||||||
elif event == 'Get Folder':
|
elif event == 'Get Folder':
|
||||||
popup_scrolled('Returned:', popup_get_folder('Get Folder'))
|
popup_scrolled('Returned:', popup_get_folder('Get Folder', keep_on_top=True))
|
||||||
elif event == 'Get Date':
|
elif event == 'Get Date':
|
||||||
popup_scrolled('Returned:', popup_get_date())
|
popup_scrolled('Returned:', popup_get_date(keep_on_top=True))
|
||||||
elif event == 'Get Text':
|
elif event == 'Get Text':
|
||||||
popup_scrolled('Returned:', popup_get_text('Enter some text'))
|
popup_scrolled('Returned:', popup_get_text('Enter some text', keep_on_top=True))
|
||||||
elif event.startswith('-UDEMY-'):
|
elif event.startswith('-UDEMY-'):
|
||||||
webbrowser.open_new_tab(r'https://udemy.com/PySimpleGUI')
|
webbrowser.open_new_tab(r'https://udemy.com/PySimpleGUI')
|
||||||
elif event.startswith('-SPONSOR-'):
|
elif event.startswith('-SPONSOR-'):
|
||||||
|
@ -23745,9 +23754,9 @@ def main():
|
||||||
if webbrowser_available:
|
if webbrowser_available:
|
||||||
# webbrowser.open_new_tab(r'https://udemy.com/PySimpleGUI')
|
# webbrowser.open_new_tab(r'https://udemy.com/PySimpleGUI')
|
||||||
webbrowser.open_new_tab(r'https://www.buymeacoffee.com/PySimpleGUI')
|
webbrowser.open_new_tab(r'https://www.buymeacoffee.com/PySimpleGUI')
|
||||||
elif event in ('-EMOJI-HEARTS-', '-HEART-'):
|
elif event in ('-EMOJI-HEARTS-', '-HEART-', '-PYTHON HEARTS-'):
|
||||||
popup_scrolled("Oh look! It's a Udemy discount coupon!", 'BDC40CE5211BD258C767',
|
popup_scrolled("Oh look! It's a Udemy discount coupon!", 'BDC40CE5211BD258C767',
|
||||||
'A personal message from Mike -- thank you so very much for supporting PySimpleGUI!', title='Udemy Coupon', image=EMOJI_BASE64_MIKE)
|
'A personal message from Mike -- thank you so very much for supporting PySimpleGUI!', title='Udemy Coupon', image=EMOJI_BASE64_MIKE, keep_on_top=True)
|
||||||
|
|
||||||
elif event == 'Themes':
|
elif event == 'Themes':
|
||||||
search_string = popup_get_text('Enter a search term or leave blank for all themes', 'Show Available Themes', keep_on_top=True)
|
search_string = popup_get_text('Enter a search term or leave blank for all themes', 'Show Available Themes', keep_on_top=True)
|
||||||
|
@ -23778,8 +23787,10 @@ def main():
|
||||||
elif event == 'P NoTitle':
|
elif event == 'P NoTitle':
|
||||||
popup_no_titlebar('No titlebar', keep_on_top=True)
|
popup_no_titlebar('No titlebar', keep_on_top=True)
|
||||||
elif event == 'P NoModal':
|
elif event == 'P NoModal':
|
||||||
|
set_options(force_modal_windows=False)
|
||||||
popup('Normal Popup - Not Modal', 'You can interact with main window menubar ',
|
popup('Normal Popup - Not Modal', 'You can interact with main window menubar ',
|
||||||
'but will have no effect immediately', 'button clicks will happen after you close this popup', modal=False, keep_on_top=True)
|
'but will have no effect immediately', 'button clicks will happen after you close this popup', modal=False, keep_on_top=True)
|
||||||
|
set_options(force_modal_windows=True)
|
||||||
elif event == 'P NoBlock':
|
elif event == 'P NoBlock':
|
||||||
popup_non_blocking('Non-blocking', 'The background window should still be running', keep_on_top=True)
|
popup_non_blocking('Non-blocking', 'The background window should still be running', keep_on_top=True)
|
||||||
elif event == 'P AutoClose':
|
elif event == 'P AutoClose':
|
||||||
|
@ -23794,7 +23805,7 @@ def main():
|
||||||
# _refresh_debugger()
|
# _refresh_debugger()
|
||||||
print('event = ', event)
|
print('event = ', event)
|
||||||
window.close()
|
window.close()
|
||||||
|
set_options(force_modal_windows=forced_modal)
|
||||||
|
|
||||||
# ------------------------ PEP8-ify The SDK ------------------------#
|
# ------------------------ PEP8-ify The SDK ------------------------#
|
||||||
|
|
||||||
|
|
|
@ -19463,6 +19463,7 @@ set_options(icon = None,
|
||||||
dpi_awareness = None,
|
dpi_awareness = None,
|
||||||
scaling = None,
|
scaling = None,
|
||||||
disable_modal_windows = None,
|
disable_modal_windows = None,
|
||||||
|
force_modal_windows = None,
|
||||||
tooltip_offset = (None, None))
|
tooltip_offset = (None, None))
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -19523,7 +19524,8 @@ Parameter Descriptions:
|
||||||
| bool | keep_on_top | If True then all windows will automatically be set to keep_on_top=True |
|
| bool | keep_on_top | If True then all windows will automatically be set to keep_on_top=True |
|
||||||
| bool | dpi_awareness | If True then will turn on DPI awareness (Windows only at the moment) |
|
| bool | dpi_awareness | If True then will turn on DPI awareness (Windows only at the moment) |
|
||||||
| float | scaling | Sets the default scaling for all windows including popups, etc. |
|
| float | scaling | Sets the default scaling for all windows including popups, etc. |
|
||||||
| bool | disable_modal_windows | If True then all windows, including popups, will not be modal windows |
|
| bool | disable_modal_windows | If True then all windows, including popups, will not be modal windows (unless they've been set to FORCED using another option) |
|
||||||
|
| bool | force_modal_windows | If True then all windows will be modal (the disable option will be ignored... all windows will be forced to be modal) |
|
||||||
| ((None, None) or (int, int)) | tooltip_offset | Offset to use for tooltips as a tuple. These values will be added to the mouse location when the widget was entered. |
|
| ((None, None) or (int, int)) | tooltip_offset | Offset to use for tooltips as a tuple. These values will be added to the mouse location when the widget was entered. |
|
||||||
| None | **RETURN** | None
|
| None | **RETURN** | None
|
||||||
|
|
||||||
|
@ -19597,6 +19599,7 @@ SetOptions(icon = None,
|
||||||
dpi_awareness = None,
|
dpi_awareness = None,
|
||||||
scaling = None,
|
scaling = None,
|
||||||
disable_modal_windows = None,
|
disable_modal_windows = None,
|
||||||
|
force_modal_windows = None,
|
||||||
tooltip_offset = (None, None))
|
tooltip_offset = (None, None))
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -19657,7 +19660,8 @@ Parameter Descriptions:
|
||||||
| bool | keep_on_top | If True then all windows will automatically be set to keep_on_top=True |
|
| bool | keep_on_top | If True then all windows will automatically be set to keep_on_top=True |
|
||||||
| bool | dpi_awareness | If True then will turn on DPI awareness (Windows only at the moment) |
|
| bool | dpi_awareness | If True then will turn on DPI awareness (Windows only at the moment) |
|
||||||
| float | scaling | Sets the default scaling for all windows including popups, etc. |
|
| float | scaling | Sets the default scaling for all windows including popups, etc. |
|
||||||
| bool | disable_modal_windows | If True then all windows, including popups, will not be modal windows |
|
| bool | disable_modal_windows | If True then all windows, including popups, will not be modal windows (unless they've been set to FORCED using another option) |
|
||||||
|
| bool | force_modal_windows | If True then all windows will be modal (the disable option will be ignored... all windows will be forced to be modal) |
|
||||||
| ((None, None) or (int, int)) | tooltip_offset | Offset to use for tooltips as a tuple. These values will be added to the mouse location when the widget was entered. |
|
| ((None, None) or (int, int)) | tooltip_offset | Offset to use for tooltips as a tuple. These values will be added to the mouse location when the widget was entered. |
|
||||||
| None | **RETURN** | None
|
| None | **RETURN** | None
|
||||||
|
|
||||||
|
|
|
@ -9928,6 +9928,24 @@ Visibility losing settings fix
|
||||||
- `header_relief` - the type of header relief to use
|
- `header_relief` - the type of header relief to use
|
||||||
- `Table` and `Tree` elements are now excluded from grab-anywhere so that headers can be resized without moving the window
|
- `Table` and `Tree` elements are now excluded from grab-anywhere so that headers can be resized without moving the window
|
||||||
|
|
||||||
|
## 4.59.0 PySimpleGUI 4-Apr-2022
|
||||||
|
|
||||||
|
An oh sh*t release due to yesterday's bug
|
||||||
|
New force modal Windows option
|
||||||
|
Test harness forces all windows to be modal and is no longer keep-on-top
|
||||||
|
|
||||||
|
- Removed ttk theme from the test harness. Forgot that I had changed it for testing.
|
||||||
|
- Fixed bug where disabled state was not correctly saved in update methods, causing events to not be generated (Thank you Jason, again!)
|
||||||
|
- Changed numerous elements, not just the `Input` element that demonstrated the problem
|
||||||
|
- New `force_modal_windows` parm added to `set_options`
|
||||||
|
- Forces all windows to be modal
|
||||||
|
- Overrides the `disable_modal_windows` option
|
||||||
|
- Used in the `main()` test harness to ensure all windows are modal so no window is accidentally lost
|
||||||
|
- Test Harness changes
|
||||||
|
- Set `keep_on_top=True` for all popups and windows created by test harness
|
||||||
|
- Set the main window `keep_on_top=False`. Ensures that all windows created by it should never be hidden. This is a somewhat experimental change. Let's hope for the best!
|
||||||
|
- Forced all windows except for 1 non-modal popup to be modal. This also should ensure no windows are "lost" behind the main window
|
||||||
|
|
||||||
## Code Condition
|
## Code Condition
|
||||||
|
|
||||||
Make it run
|
Make it run
|
||||||
|
|
|
@ -2472,6 +2472,25 @@ Visibility losing settings fix
|
||||||
- `header_relief` - the type of header relief to use
|
- `header_relief` - the type of header relief to use
|
||||||
- `Table` and `Tree` elements are now excluded from grab-anywhere so that headers can be resized without moving the window
|
- `Table` and `Tree` elements are now excluded from grab-anywhere so that headers can be resized without moving the window
|
||||||
|
|
||||||
|
## 4.59.0 PySimpleGUI 4-Apr-2022
|
||||||
|
|
||||||
|
An oh sh*t release due to yesterday's bug
|
||||||
|
New force modal Windows option
|
||||||
|
Test harness forces all windows to be modal and is no longer keep-on-top
|
||||||
|
|
||||||
|
- Removed ttk theme from the test harness. Forgot that I had changed it for testing.
|
||||||
|
- Fixed bug where disabled state was not correctly saved in update methods, causing events to not be generated (Thank you Jason, again!)
|
||||||
|
- Changed numerous elements, not just the `Input` element that demonstrated the problem
|
||||||
|
- New `force_modal_windows` parm added to `set_options`
|
||||||
|
- Forces all windows to be modal
|
||||||
|
- Overrides the `disable_modal_windows` option
|
||||||
|
- Used in the `main()` test harness to ensure all windows are modal so no window is accidentally lost
|
||||||
|
- Test Harness changes
|
||||||
|
- Set `keep_on_top=True` for all popups and windows created by test harness
|
||||||
|
- Set the main window `keep_on_top=False`. Ensures that all windows created by it should never be hidden. This is a somewhat experimental change. Let's hope for the best!
|
||||||
|
- Forced all windows except for 1 non-modal popup to be modal. This also should ensure no windows are "lost" behind the main window
|
||||||
|
|
||||||
|
|
||||||
## Code Condition
|
## Code Condition
|
||||||
|
|
||||||
Make it run
|
Make it run
|
||||||
|
|
|
@ -19463,6 +19463,7 @@ set_options(icon = None,
|
||||||
dpi_awareness = None,
|
dpi_awareness = None,
|
||||||
scaling = None,
|
scaling = None,
|
||||||
disable_modal_windows = None,
|
disable_modal_windows = None,
|
||||||
|
force_modal_windows = None,
|
||||||
tooltip_offset = (None, None))
|
tooltip_offset = (None, None))
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -19523,7 +19524,8 @@ Parameter Descriptions:
|
||||||
| bool | keep_on_top | If True then all windows will automatically be set to keep_on_top=True |
|
| bool | keep_on_top | If True then all windows will automatically be set to keep_on_top=True |
|
||||||
| bool | dpi_awareness | If True then will turn on DPI awareness (Windows only at the moment) |
|
| bool | dpi_awareness | If True then will turn on DPI awareness (Windows only at the moment) |
|
||||||
| float | scaling | Sets the default scaling for all windows including popups, etc. |
|
| float | scaling | Sets the default scaling for all windows including popups, etc. |
|
||||||
| bool | disable_modal_windows | If True then all windows, including popups, will not be modal windows |
|
| bool | disable_modal_windows | If True then all windows, including popups, will not be modal windows (unless they've been set to FORCED using another option) |
|
||||||
|
| bool | force_modal_windows | If True then all windows will be modal (the disable option will be ignored... all windows will be forced to be modal) |
|
||||||
| ((None, None) or (int, int)) | tooltip_offset | Offset to use for tooltips as a tuple. These values will be added to the mouse location when the widget was entered. |
|
| ((None, None) or (int, int)) | tooltip_offset | Offset to use for tooltips as a tuple. These values will be added to the mouse location when the widget was entered. |
|
||||||
| None | **RETURN** | None
|
| None | **RETURN** | None
|
||||||
|
|
||||||
|
@ -19597,6 +19599,7 @@ SetOptions(icon = None,
|
||||||
dpi_awareness = None,
|
dpi_awareness = None,
|
||||||
scaling = None,
|
scaling = None,
|
||||||
disable_modal_windows = None,
|
disable_modal_windows = None,
|
||||||
|
force_modal_windows = None,
|
||||||
tooltip_offset = (None, None))
|
tooltip_offset = (None, None))
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -19657,7 +19660,8 @@ Parameter Descriptions:
|
||||||
| bool | keep_on_top | If True then all windows will automatically be set to keep_on_top=True |
|
| bool | keep_on_top | If True then all windows will automatically be set to keep_on_top=True |
|
||||||
| bool | dpi_awareness | If True then will turn on DPI awareness (Windows only at the moment) |
|
| bool | dpi_awareness | If True then will turn on DPI awareness (Windows only at the moment) |
|
||||||
| float | scaling | Sets the default scaling for all windows including popups, etc. |
|
| float | scaling | Sets the default scaling for all windows including popups, etc. |
|
||||||
| bool | disable_modal_windows | If True then all windows, including popups, will not be modal windows |
|
| bool | disable_modal_windows | If True then all windows, including popups, will not be modal windows (unless they've been set to FORCED using another option) |
|
||||||
|
| bool | force_modal_windows | If True then all windows will be modal (the disable option will be ignored... all windows will be forced to be modal) |
|
||||||
| ((None, None) or (int, int)) | tooltip_offset | Offset to use for tooltips as a tuple. These values will be added to the mouse location when the widget was entered. |
|
| ((None, None) or (int, int)) | tooltip_offset | Offset to use for tooltips as a tuple. These values will be added to the mouse location when the widget was entered. |
|
||||||
| None | **RETURN** | None
|
| None | **RETURN** | None
|
||||||
|
|
||||||
|
|
|
@ -9928,6 +9928,24 @@ Visibility losing settings fix
|
||||||
- `header_relief` - the type of header relief to use
|
- `header_relief` - the type of header relief to use
|
||||||
- `Table` and `Tree` elements are now excluded from grab-anywhere so that headers can be resized without moving the window
|
- `Table` and `Tree` elements are now excluded from grab-anywhere so that headers can be resized without moving the window
|
||||||
|
|
||||||
|
## 4.59.0 PySimpleGUI 4-Apr-2022
|
||||||
|
|
||||||
|
An oh sh*t release due to yesterday's bug
|
||||||
|
New force modal Windows option
|
||||||
|
Test harness forces all windows to be modal and is no longer keep-on-top
|
||||||
|
|
||||||
|
- Removed ttk theme from the test harness. Forgot that I had changed it for testing.
|
||||||
|
- Fixed bug where disabled state was not correctly saved in update methods, causing events to not be generated (Thank you Jason, again!)
|
||||||
|
- Changed numerous elements, not just the `Input` element that demonstrated the problem
|
||||||
|
- New `force_modal_windows` parm added to `set_options`
|
||||||
|
- Forces all windows to be modal
|
||||||
|
- Overrides the `disable_modal_windows` option
|
||||||
|
- Used in the `main()` test harness to ensure all windows are modal so no window is accidentally lost
|
||||||
|
- Test Harness changes
|
||||||
|
- Set `keep_on_top=True` for all popups and windows created by test harness
|
||||||
|
- Set the main window `keep_on_top=False`. Ensures that all windows created by it should never be hidden. This is a somewhat experimental change. Let's hope for the best!
|
||||||
|
- Forced all windows except for 1 non-modal popup to be modal. This also should ensure no windows are "lost" behind the main window
|
||||||
|
|
||||||
## Code Condition
|
## Code Condition
|
||||||
|
|
||||||
Make it run
|
Make it run
|
||||||
|
|
Loading…
Reference in New Issue