Web Analytics Made Easy - Statcounter
Skip to content

5.0 Feb-2024

  • main_open_github_issue - prefill the "Details" using the platform module (thank you macdeport!)
  • Fills Mac, Windows and Linux with details
  • Fix for the "jumping window problem on Linux". Major credit to Chr0nic for his amazing "stick with it" work on this problem!
  • Removed the previous fix attempt for jumping window on linux
  • Added ability for Mac users to specify file_type in Browse and popup_get_file
  • This feature must be ENABLED by the user in the Mac control panel that can be found in the PySimpleGUI Global Settings
  • The default is this feature is OFF
  • New location parameter option for Windows. Setting location=None tells PySimpleGUI to not set any location when window is created. It's up to the OS to decide.
  • The docstring for Window has been changed, but not all the other places (like popup). Want to make sure this works before making all those changes.
  • Added check for None invalid values parm when creating a Listbox element
  • Column docstring changed to add reminder to call contents_changed if changing the contents of a scrollable column
  • Fixed crash when horizontal_scroll=True for Listbox element
  • Added readonly to Input.update
  • Added Window.set_resizable - can change the X and Y axis resizing after window is created
  • Added wrap parameter to Spin element - if True, wraps back to the first value when at the end
  • Temp test code added for a new verification feature
  • Fixed Spin Element docstring - readonly was not correct
  • Output element - addition of wrap_lines and horizontal_scroll parameters
  • Multiline element - addition of wrap_lines parameter
  • Added Window.unbind
  • Added (None, None) to the Window docstring
  • Fix for continuous Graph element mouse up events when reading with a timeout=0. Big thank you to @davesmivers (THANKS DAVE!!) for finding and fixing
  • Added platform (Windows, Mac, Linux) and platform version information to the get_versions function
  • Added a fix for the file_types Mac problem that doesn't require the system settings to be used... let's give it a go!
  • Added ubiquitious Edit Me to the right click menu
  • PySimpleGUI Anniversary sale on Udemy course coupon
  • Fix for bind_return_key - if a button has been disabled, then the event shouldn't be generated for the return key being pressed
  • Added cols_justification for Table element - list or tuple of strings that indicates how each column should be justified
  • Better error handling for table element's new justification list. If a bad value is found, will use the default value
  • Additional mac filetype testing.... added more combinations that specify
  • Added * . to the Mac filetypes to check for
  • New logic for checking for the * case for Mac filetypes
  • Docstring update - TabGroup visible parameter marked as deprecated . Use a Column element to make a TabGroup invisible
  • Docstring update for the pin helper function that describes the shrinking of the container that it helps provide.
  • Also added explanation that it's the elements you want to make visible/invisible that are what you want to pin
  • Applied same Mac file_types fix to popup_get_file
  • Removed filetypes setting from Mac Feature Control Panel
  • Addition of enable_window_config_events to the Window object. This will cause a EVENT_WIMDOW_CONFIG event to be returned
  • if the window is moved or resized.
  • Made upgrade from GitHub window resizable so can screencapture the entire session
  • Added new constant TKINTER_CURSORS which contains a list of the standard tkinter cursor names
  • Added erase_all parameter to cprint (like the Debug Print already has)
  • Fix popup_scrolled - was only adding the Sizegrip when there was no titlebar. It should be added to all windows
  • unless the no_sizegrip parameter is set.
  • popup_scrolled - added no_buttons option. If True then there will not be a row at the bottom where the buttons normally are.
  • User will have to close the window with the "X"
  • popup_scrolled - added button_justification parameter. Wanted to make scrolled popups consistent with other popups which have left justified
  • buttons. But since they've been right justified in the past, want to give users the ability to retain that look.
  • Since the Sizegrip works correctly now, it increases the changes of accidently clicking a button if it's right justified.
  • Added default_color to ColorChooser button
  • Added to Button element error message that images must be in PNG or GIF format
  • Added exapnd_x and expand_y to all of the "lazy buttons" and Chooser buttons
  • Column element - added horizontal_scroll_only parameter (fingers crossed on this one....)
  • New signature testing
  • Exposed the Table Element's ttk style using member variable TABLE.table_ttk_style_name
  • New signature format
  • Backed out the changes from 4.61.0.38 (horizontal_scroll_only parameter). Those changes broke code in the scrollable columns. Need to make time to work on this feature more.
  • Added a print if get an exception trying to set the alpha channel after a window is created (troubleshooting a Mac problem)
  • Updated Menubar docstring to clarify the Menubar iself cannot have colors changed, only the submenus. Use MenubarCustom if you want full control
  • Format of file-signature changed
  • Further refinement of Menubar docstring
  • Added suggestion of using the Demo Browser to the checklist item of "Look for Demo Programs similar to your problem"
  • Testing some importing methods
  • Delay rerouting stdout and stderr in Output and Multiline elements until window is being built instead of when element is initialized
  • Additional window movement capability. If Control+Mouse movement feature is enabled, then Control+Arrow key will move the window 1 pixel
  • in the indicated direction
  • Added Window.set_size to match the other settings that are performed through method calls. There is also the Window.size property, but
  • since PySimpleGUI rarely uses properties, it makes sense to include a method as well as a property
  • Fix for ColorChooser button filling in a None value when cancel from color choise dialog box. Nothing will be filled in target if dialog cancelled
  • vtop, vcenter, vbottom helper functions gets background_color parameter
  • vcenter and vbottom - added USING the expand_x and expand_y parms that were already defined. (HOPE NOTHING BREAKS!)
  • justification parameter added to Listbox (default is left.. can be right and center now too)
  • Made settings dictionary multiline in test harness write-only. New coupon code
  • alpha_channel added to set_options. This sets the default value for the alpha_channel for all windows both user generated and PySimpleGUI generated (such as popups).
  • Allow Browse/Chooser buttons (that have a target) to indicate a target key that is a tuple.
  • While not actually correct.... 4.60.1 was released in the middle of the development above... I'm changing the version to look as
  • if this release is based on 4.60.1. This code DOES have the same code that's in 4.60.1 so it's more a matter of symantics.
  • Hoping this clears up confusion. Sorry for the dot-release causing so much confusion.
  • Fix for Window.extend_layout. Was not picking up the background color of the container that the rows were being added to.
  • Fixed Text element's update method docstring to indicate that value can be "Any" type not just strings
  • Addition of without_titlebar paramter to Window.current_location. Defaults to False. If True, then the location of the main portion of the window
  • will be returned (i.e. will not have the titlebar)
  • Fix for crash if COLOR_SYSTEM_DEFAULT specified in parameter disabled_readonly_background_color or disabled_readonly_text_color for Input Element.
  • Also applied similar fix for Tab element's focus color
  • Addition of set_option parameter hide_window_when_creating. If set to False then window will not be hidden while creating and moving
  • Changed the documentation location to PySimpleGUI.org (updated some comments as well as the SDK Reference Window's links)
  • New coupon code. Make the Udemy button in the test harness now include the coupon code automatically
  • Removed the "NOT avoilable on the MAC" from file_types parameter in the docstrings
  • Use Withdraw to hide window during creation
  • Addition of checklist item when logging new issue to GitHub - upgraded to latest version of PySimpleGUI on PyPI
  • Listbox justification parameter found to not be implemented on some early verions of tkinter so had to protect this situation. This new feature crashed on the Pi for example
  • Allow set_options(window_location=None) to indicate the OS should provide the window location.
  • This will stop the Alpha channel being set to 0 when the window is created
  • Addition of new Mac Control Panel option and emergency patch for MacOS version 12.3+
  • If MacOS version 12.3 or greater than option is ON by default
  • When ON, the default Alpha channel for all windows is set to 0.99.
  • This can either be turned off, or can be overridden by calling set_options in your application
  • Bumping version number to avoid confusion. An emergency 4.60.2 release was posted to PyPI. This change was added to this current GitHub version of PySimpleGUI.
  • Fixed bug in checking Mac OS version number that is being released as 4.60.3
  • Correctly check for Mac 12.3+ AND 13+ this time.
  • Roll in the changes being released to PyPI as 4.60.3
  • Test to see if the additional pack of Notebook in Tab code was causing expansion problems
  • Debug Print - fix for bug caused by no_button being set with non_blocking... a lesson in thorough testing... assumption was either blocking OR no_button (or else app would
  • close without seeing the output... unless something else blocked. (DOH)
  • "Window closed" check added to update methods for elements. This will prevent a crash and instead show an error popup
  • Will be helpful for users that forget to check for closed window event in their event loop and try to call update after window closed.
  • Output element now automatically sets auto_refresh to True. Should this not be desired, switch to using the Multiline element. There will likely be
  • no impact to this change as it seems like the windows are alredy refreshing OK, but adding it just to be sure.
  • Addition of Window.key_is_good(key) method. Returns True if key is used in the window. Saves from having to understand the window's key dictionary.
  • Makes for easier code completion versus writing "if key in window.key_dict"
  • Combo - if readonly, then set the select colors to be "transparent" (text=text color, background=background color)
  • Better description of bar_color parm for the ProgressMeter element and the one_line_progress_meter function
  • Combo element - addition of select parameter to enable easier selection of the contents of clearing of the selection of the contents.
  • Changed the _this_elements_window_closed to use a flag "quick_check" for cheking is the window is closed. Found that calling tkinter.update takes over 500ms sometimes!
  • For appllications that call update frequently, this caused a catestrophic slowdown for complex windows.
  • New Window method - get_scaling - gets the scaling value from tkinter. Returns DEFAULT_SCALING if error.
  • Custom Titlebar - Support added to Window.minimize, Window.maximize, and Window.normal
  • Fix for Mulitline showing constant error messages after a Window is closed.
  • Fix for correctly restoring stdout, stderr after they've been rerouted. THIS CODE IS NOT YET COMPLETE! Shooting for this weekend to get it done!
  • Image element - more speicific with tkinter when chaning to a new image so that pypy would stop crashing due to garbage collect not running.
  • This change didn't fix the pypy problem but it also didn't hurt the code to have it
  • Quick and dirty addition of Alt-shortcuts for Buttons (like exists for Menus)
  • For backward compatablity, must be enabled using set_options with use_button_shortcuts=True
  • Fixed docstring errors in set_options docstring
  • Completed restoration of stdout & stderr
  • If an Output Element is used or a Multline element to reroute stdout and/or stderr, then this hasn't worked quite right in the past
  • Hopefuly now, it does. A LIFO list (stack) is used to keep track of the current output device and is scrubbed for closed windows and restored if one is closed
  • Addition of Style Names for horizontaland vertical ttk scrollbars - hsb_style_name and vsb_style_name so that scrollbar colors can be changed in user code
  • Output element - now automatically reroutes cprint to here as well. Assumption is that you want stuff to go here without
  • needing to specify each thing. If want more control, then use the Multiline directly
  • Output element - updated docstring
  • Combo Element - new parameter enable_per_char_events. When True will get an event when individual characters are entered.
  • Added path to the interpreter to the get_versions information for better debugging
  • Dark Gray 16 theme added
  • New batch of Emojis!
  • Addition of TITLEBAR_TEXT_KEY to provide access to custom titlebar titles
  • Implemented the visible parameter for TabGroup. Was not being honored when creating element. Added TabGroup.update so it can be made visible.
  • Added support for Custom Titlebar to the Window.set_title method
  • Addition of starting_row_number parameter to the Table element. Sets the value for the first row in the table.
  • Added 2 parameters to popup - drop_whitespace is passed to the wraptext.fill method. right_justify_buttons will "push" buttons to
  • the right side if set to True
  • Added Element.save_element_screenshot_to_disk - uses the same PIL integration that the save window screenshot to disk uses but applied to a single element
  • Changed popup again - replaced right_justify_buttons with button_justification. Also removed the extra padding that was being added to the buttons. This
  • matches a changed made to popup_scrolled earlier
  • More emojis? Yes... more emojis...
  • The main test harness now shows the python interpreter used to launch the test harness to make clearer what's running
  • Better alignment of text in test harness
  • Fixed mispelling in SystemTray.show_message - crashed if an int was passed in as the time value
  • popup_get_text - Addition of history feature to bring up to same level as other popup_get_ functions.
  • Set the "Active" foreground and background colors for Menu and ButtonMenu items. Automatically uses the swapped foreground and background colors.
  • This impacts both inside the menus themseleves as well as the ButtonMenus so that when they are used in a MenubarCustom they mouseover nicely now.
  • Added Window.is_hidden method. Returns True if the window is currently hidden
  • Fixed error in the main test harness "not modal" popup test. Was setting the "Force Modal" setting to true after the popup test.
  • Trinket is detected using a new mechansim now. The previous one was waayyy too simnple and as a result has broken in the past week.
  • Version bump to keep up with the PyPI emergency 4.60.4 release
  • Added SYMBOL_BULLET character
  • Neon Green, Blue, Yellow themes... was writing some tests using them and thought why not start a new theme color category... "neon"
  • Fixed an unreported problem perhaps... Added saving new menu into the Menu.Widget memeber variable in the Menu.update method.
  • Added drop_whitespace to the docstring for popup. Parm has been in the code for quite some time but forgot the docstring so it's not in the SDK reference.
  • Changed error message in error window when an element reuse has been detected in a layout. Previous message wasn't clear why there was an error.
  • Added very detailed information to popup_error_with_traceback if the Exception information is passed in as one of the arguments
  • Menu Element - delete all items in existing Menu widget rather than making a new one when the Menu definition changes
  • Input.update - added font parameter
  • Dark Blue 18 theme, a materially kinda theme, added - tip - experiment like PySimpleGUI does when "computing" colors. Grab a color of a part of a theme and use it as a background or a secondary button color. In other words, mix and match since the colors should all work together by design.
  • Added execute_py_get_running_interpreter to differentiate between the one in the settings file versus currently running interpreter
  • Image Element... added Zooooooooommmmm parameter
  • Proliferiation/infection of the zoom parameter to more elements with images - Button, ButtonMenu
  • Note that zoom and subsample can BOTH be used. This enables fractional scaling. Want 2/3 the size of the image? subsample=3, zoom=2
  • Tab is the remaining element this is being added to
  • The Buttons implemented as functions need this addition as well
  • Addition of the image_source parameter to Button and Button.update. This way of specifying images is commonly used in other elements
  • Fixed ButtonMenu bug - subsample was not being applied to initial image in the layout
  • Fix for set_vscroll_position not working correctly for a scrollable Column
  • Completed addition of zoom options for images by adding image_zoom parameter to Tab element
  • Fixed Neon Yellow theme. Had an extra "#" in a color.
  • New coupon code
  • New Jedi emoji
  • Swapped Push and Stretch, VPush and VStretch. Made Push and VPush the function and Stratch and VStresth the aliases. Did this because
  • Push is used almost universally, not Stretch.
  • Fix for incorrect values for Element.ttk_style and Element.ttk_style_name. Some elements had values overwritten if a scrollbar, etc, was used
  • Changed a number of the ttk elements (Button for example) to use the base name as the parm to creating the custom style to achieve
  • a more predictable naming style (relies on the formula used in the create style function rather than ad hoc adding "custom" onto name)
  • Multiline Element docstring fixes
  • Addition of 2 overrides to Window.find_element so that more control is available to applications wishing to perform special key lookups
  • Made button_color parameter's docstring value consistent across all calls. Now set to - (str, str) | str
  • User settings delete calls - aded silent_on_error option so deletes of non-existant entries can uappen silently if desired.
  • popup_quick_message - now defaults to keep-on-top to True
  • Cleaned up User Settings API code for porting
  • button_color parm added to ButtonMenu.update
  • New coupon
  • Window timers feature added. Get a single or repeating timer events for your Window by calling window.timer_start
  • Added the Window.stop_all method to stop all timers for a window
  • Added Window.timer_get_active_timers to get a list of the active timers for the window
  • popup_get_date - exposed the fonts as parameters so that the user code and modify them (specifically to get around a Mac font bug)
  • Renamed QuickMeter to _QuickMeter so that it's clear that it's not an object meant to be used by users
  • Tree element - if headings is set to None, no headings area is shown
  • "Take me to error" button is disabled in error traceback popup if not editor is configured. Also adds instructions if no editor.
  • Added begin_at_sunday_plus to the CalendarButton docstring
  • Moved debugger constants to inside of the debugger class. Simplified the locals and globals popups.
  • Experimental change.... Table.get now returns the values from the widget's selection method
  • Made the Debugger's use of popups change the theme to the same dark gray theme used in the rest of the debugger windows.
  • Added selected_text_color & selected_background_color to Input element. Will override the default values
  • Fixed bug in Combo.update - the width of the element wasn't getting updated to match new values
  • Added selected_text_color & selected_background_color to Multiline element. Will override the default values
  • Fixed bind_return_key docstrings in the pre-defined buttons. Made the Button bind_return_key docstring more descriptive
  • Changed version numbers to 4.61.0 to try and fix the confusion about what's been released to PyPI.
  • New Udemy coupon code
  • Removed the print when the Mac Alpha Channel 0.99 patch is applied
  • Removed second print when Mac patch applied
  • Tree Element new parameter - click_toggles_select - if True then clicking a selected item will unselect it
  • Fixed problem with TabGroups when the text was blank for a Tab. Was not correctly identifying the active tab in the Values dictionary
  • Updated TabGroup.get to use the same method to find the currently active tab that was just added above.
  • Updated layout error messages to include "sometimes" in the description of what may be causing error
  • Updated Window.start_timer docstring to include the constants EVENT_TIMER and TIMER_KEY since the call reference doesn't show the variable names but rather the string value.
  • Multiline new parameter autoscroll_only_at_bottom. When True, the element will autoscroll (keep scrollbar at the bottom) only if the scrollbar is already at the bottom.
  • Added the new Multiline parameter autoscroll_only_at_bottom so that the Output element can also use this option
  • Added the _optional_window_data function that is used to help with local PySimpleGUI testing of release candidates. Not meant to be used by end-users.
  • Changed Checkbox activeforeground to be the same as the text so mouseover doesn't change color
  • New Global Settings feature - Window watermarking. Can be forced on temporarily by settings watermark=True in your Window creation
  • Fix "Bold" crash from watermarking feature
  • New set_options to control user-defined watermarks
  • Addition of new parms to Combo.update - text color, background color. Also font now applied correctly to dropdown list
  • Checkbox - added highlight thickness parm to control how thick the focus ring is. Defaults to 1 still but now changable
  • Input element - fixed problem where the input 'cursor' (the I-beam) was being set to the THEME'S color, not the color indicated by the individual element
  • Multiline & Spin - Applied same fix for input "cursor" (I-Beam) color that was added to the Input element.
  • Added new method - set_ibeam_color to Input, Multiline and Spin elements. Combo is a ttk element so it's not available using this call yet
  • New Udemy coupon
  • New Udemy coupon
  • Fix for bad user settings key for user watermark. Added Python version to watermark
  • Changed Radio activeforeground to be the same as the text so mouseover doesn't change color
  • Allow no end-key to be specified for perform_long_operation/start_thread. Careful with backward compatibility! If you skip adding parm on old versions of PySimpleGUI then it'll not work.
  • Possible fix for Mac Input Element issue that's been happening with no-titlebar windows on MacOS 13.2.1 Ventura
  • Added upgrade service - No notification popups should be shown yet. Don't want to SPAM users while testing
  • Made changing the "Show only critical" setting in global settings take effect immediately rather than waiting until closed settings window
  • Added timer_stop_usec to return timer value in microseconds
  • Overwrite upgrade data if any portion has changed
  • Notification window - added countdown counter. Added hand cursor if message is a link and enable clicking of link to open the browser to that link
  • Improved linux distro detection
  • Custom Titlebar - Support for disabling resizing (maximizing too), support for disable minimize and disable close
  • Input element - fix for bug with text color & logic wasn't quite right with the "read for disabled" stuff in the update as well as when making window
  • New Udemy coupon
  • Removed Security tab from system settings
  • Added check for None and COLOR_SYSTEM_DEFAULT before any colors being set in Input.update
  • Only enable the Mac alpha channel 0.99 patch when tkinter version is 8.6.12. Have learned this is not needed for any other tkinter version
  • Show Critical upgrade service messages. Removed the extra upgrade from github button from tab.
  • Fix for Combo.update background color changing incorrect widget setting.
  • Fix for crash when no headings specified for a table by casting values into strings
  • Fix for popup_get_file when using no_window=True. Now returns None if cancelled or window closed
  • Corrected the Table.get docstring to reflect that it returns a list of ints
  • Finished correcting the Table.get docstring.... think I got it right this time....
  • Changed Table click events to be generated on Button Release instead of Button (down). Was not getting the
  • correct selected rows in the values dictionary when the click event was generated using down. Now the selected rows is correct
  • Addition of black2 theme
  • Fix typo of text in _widget_was_created
  • Fixed bug in Button.update. Was setting the activeforeground and activebackground which broke the mouseover or mouse press colors
  • Fixed bug in Button.update. Corrected when activeforeground and activebackground are set. Removing them in version above was a mistake
  • Fixed spelling errors... resuse should have been reuse
  • Added Listbox.select_index and Listbox.set_index_color
  • New Udemy Coupon
  • Added highlight colors to the set_index_color method. Parms highlight_text_color & highlight_background_color control changing the highlight colors
  • Made Table Element Header mouse-over and clicked be the inverse of the normal header colors. Makes for a much nicer experience
  • Added no_buffering option to popup_animated
  • Updated Udemy coupon code
  • Fix for grab anywhere window movement and control+left_mouse_drag. Window move smoother, including the Move-All-Windows feature. Thank you JASON for the help!
  • Added init for _mouse_offset_x and y in case tkinter doesn't call the mouse down callback
  • Added doctring and destroy previous right click menu to set_right_click_menu
  • Changed Sizer element to use Canvas instead of Column element
  • One more change to sizer so that it uses pad instead of size.
  • Fixed docstring for execute_command_subprocess. The command description was incorrect
  • Added back the changes for Global Settings that got overwritten when I merged in the 4.60.4.120 changes.
  • Added button to delete the license key in the system setting window
  • Added deletion of trial period info if deleting the license key from the system settings
  • Added the NEW install windows. Need to integrate back in the "Trial Period" file and logic that was working before.
  • Added watermark at end of every window so we know we're running 5.0 during testing
  • Changed background color of watermark to use window's background color
  • Merged in the watermarking changes from 4.0's new global settings window
  • Fixed "Bold" bug that was crashing the Mac
  • Added watermark to all windows when in Trial Period
  • Fixed "GRADE PERIOD" misspelling. Added a newline to the watermark while we're testing. Will remove the second line in final release
  • Only changing the version number to test the toolchain (first end-to-end build including generating setup.py)
  • NEW folder layout on GitHub so need to test the new toolchain.
  • version of build script and pip installer that uses the folder to install
  • Added Python version number to the watermark on all windows for much better testing info
  • Version bump for new DEPLOY REPO
  • Added Python version to watermark
  • Manually compressing file size by removing old comments/commented out code
  • Added color to Secure and Unsecure watermarks at bottomr of window
  • Change Test Harness "Upgrade from GitHub" red button to upgrade from the NEW 5.0 Deployment GitHub!
  • Removed old pip upgrade code. Fixed crash in the SDK reference due to removal of an import
  • Flipped protection colors so that text color is always white... bg is green or red
  • NEW colors parameter for Text Element! Uses the dual-color string. Using this to set the SECURE watermark. Exclusive to 5.0 now
  • Extra set of () was causing crash in _perform_upgrade_check_thread when running on Linux
  • Watermark formatting
  • HUGE merge to bring 5.0 up to date with latest version - 4.61.0.167
  • Added the autoscroll_only_at_bottom option to Multiline used in Debug Print windows
  • AWESOME new automatic-setting feature! The "setting" parameter for elements. Added for Input, Multiline, Checkbox.
  • Bug fixes in the new settings feature
  • Radio element gets the "setting" feature
  • Merged in change from 4.60.4.168 that changed the Radio mouseover color
  • Added "setting" parameter to Listbox, Combo, Spin, Slider
  • Added crash protection to window.save_settings and also quietly return if the values dictionary is None
  • Added a "Tools" tab to test harness Can now pip install psgtest, psgdemos, psgresizer, psgcompiler, psgfiglet, psgpsg, psgtray, and psgshortcut directly from the test harness
  • Set the SECURE / NOT SECURE watermark to purple if a LOCAL copy of PySimpleGUI.py is being used versus a pip installed one
  • On Trinket - Do not show upgrade messages, write info about upgrade, nor show the security warning
  • Window.restore_settings added. Hopefully will work on all elements!
  • Renamed Window.save_settings to Window.settings_save. Same change to Window.restore_settings
  • Changed to fine granularity token for the pip installs
  • NEW Window.last_location function. Returns the last known location of the window on the screen. NEW Window feature - Auto Save Location. If new parameter to Window object auto_save_location is set to True, then the location of the window will automatically be saved and restored when the window is closed (saved) and opened (restored)
  • Reworked Test Harness GUI considerably. Removed the Sponsor tab. Created a new HELP tab and access to temp 5.0 docs.
  • Deleted a lot of text to try to shrink down the file size
  • Re-encoded ALL emojis using tinypng.com in desperation to get file size down
  • Added psg5log to the PSG Tools tab
  • Pypy3 support was added
  • Adding PyPy3.9 to the binary part of the code
  • Check to see if trial period file exists before trying to hide it when running windows
  • Changed upgrade logic and windows to match the 4.61 release
  • Renamed Security tab to License
  • Changed the "Trial Period Ending Soon" warning window to show the number of days remaining rather than saying "1 week"
  • Added Upgrade tab to the Test Harness so that users don't have to go into Global Settings to see the messages Changed the upgrade notification window: Added a visible count-down in the window. Changed the cursor into a hand if either of the messages have "http" in them If a message is clicked and has "http" in it, then open the browser to that address. This gives us the ability to quickly direct users to a specific link
  • Expanded auto_save_location feature for windows (only in 5.0) to save/recall location using the window's title so that a multi-window application will work better. Each window will get restored to its last location.
  • MUCH better auto-save of window. Needed to enable config events for all window types (blocking and non-blocking). Added protection in the initial window creation. Was oddly crashing with an x,y location of None, None. Don't know why it's never failed before. Call save to system settings file every time the window is moved. While this may create a ton of file i/o, it should be FAST to do (hopefully!!) It will only impact windows with Auto-Save enabled so should have no impact on normal windows. NOte that this change DOES impact all window befause all windows will now get a config callback from tkinter when the window is moved
  • Test to see if adding a requirments.txt file has any impact on pip installing from a GitHub repo
  • Better / final formatting of the Upgrade Notification Service window and the tab in sg.main
  • Added changes from 4.61.0.177 Custom Titlebar - Support for disabling resizing (maximizing too), support for disable minimize and disable close
  • Fixed bug in logic when first time install. Recent changes had broken the Trial Period code.
  • Added Input Element fix just added to 4.61.178. Need to keep adding 4.x changes into 5.0 until 5.0 released. Input element - fix for bug with text color & logic wasn't quite right with the "read for disabled" stuff in the update as well as when making window
  • Added indicators when PySimpleGUI code is not secure
  • Moved the licensing tab from Global Settings to the Main Test Harness. MUCH easier to access now. Will be adding licensing info into main window next
  • Shrink Test Harness window size so that it's very close to the 4.60 window size. License tab was adding the extra space.
  • Simplified and moved the Python version number in the Test Harness. Compressed size in preparation of adding licensee info to test harness.
  • License Key user's name added to the Test Harness.... as close as we get currently to Larry's Splash Screen dream
  • Added licensee name to top of License tab. Removed expiration days if in Trial Period. Switched the order of licensee shown to match other items in test harness (name will be in yellow now)
  • Added psgGPT to the tools tab in the test harness
  • Added a launch drop-down list to launch version of utility that matches currently running version of Python. Much of this tab will be kept to help promote/market the tools
  • Fix for Test Harness collapse button being shown center justified instead of left justified
  • Removed unused imports
  • Bug fix that was just made to 4.61 for Combo.update color problem. Was added in 4.61.0.184
  • Fix for crash when no headings specified for a table by casting values into strings
  • Fix for popup_get_file when using no_window=True. Now returns None if cancelled or window closed
  • Added the "NEVER POST THIS CODE ONLINE" comment warning
  • Fixed Table.get docstring
  • Changed Table click events to be generated on Button Release instead of Button (down). Was not getting the correct selected rows in the values dictionary when the click event was generated using down. Now the selected rows is correct
  • Added a "Disable PSG5 Watermark" setting in global settings so that it's possible to turn off the watermarks in PySimpleGUI 5 in order to take screenshots
  • Fixed bug in Distribution license. Wasn't finding the key
  • Display the source of the license key in the test harness where the key is located Added protection to stop users from simply deleting the trial period file. Now the trial period data is also saved in the PySimpleGUI settings file
  • Added display of license type to License tab
  • Added code to get the distribution version number from the license key. Added display of distribution version to the License Tab in the test harness Made license key optional parm in several functions. This change will likely proliferate to the other license funcs
  • Added Black2 theme
  • Fixed typo in _widget_was_created
  • Added version string to both source files. Needed so that distribution version check is SECURE Added fucntion to check the a distribution key's version against the currently running version Added information about distribution version to the license tab in the test harness
  • Fixed incorrect reporting of days since license expired in error window Made bad license window more intelligent by not showing the "enter developer licnse" multiline if a distribution license was used Added proper checking of distribution license version number
  • Added hooks for psglicense command line command
  • Added window that displays license information when psglicense is typed on the command line
  • Split the security check from the license check Allow the command line psglicense to bypass the license check but only allow license to be displayed
  • Fixed crash due to license text removed Changed text from Grace period to Trial period
  • Changed Grace Period to Trial Period everywhere
  • YIKES! Added back in the license check... accidently deleted it earlier
  • Aded fix from 4.61.0.191 Fixed bug in Button.update. Was setting the activeforeground and activebackground which broke the mouseover or mouse press colors
  • Fixed bug in Button.update. Corrected when activeforeground and activebackground are set. Removing them in version above was a mistake
  • Applied same fix as in 4.61 - Fixed spelling errors... resuse should have been reuse
  • Added the NEW GitHub version of psgdemos so that it'll pip install from there instead of pypi
  • Added enable events to the OptionMenu element. BIG THANK YOU to Jason for showing how to do this!!!!
  • Changed pip command to install psggpt since the location moved to a new repo
  • (New PSG 4 feature added to both 4 and 5) Added Listbox.select_index and Listbox.set_index_color
  • Added highlight colors to the set_index_color method. Parms highlight_text_color & highlight_background_color control changing the highlight colors
  • Changed the Trial Period Date storage.... big change... no more individual month, day, year. Instead stored in encoded format. Risky change so everyone test!
  • Trying out a new Trial Period watermark that's NOT subtle.... maybe it'll "motivate" people to get a key?
  • Reduced size of Trial Period Watermark from 16 to 12. Flipped colors to red on white. Changed text and added an hourglass.
  • Fixed watermark. What showing a blank field where trial watermark goes if there was no trial active.
  • Trial period watermark hourglass only shows on Windows and Mac now
  • Addition of "Get a License Key" button in the psgmain window (test harness)
  • Made several of main window's buttons 2 lines tall to reduce the width used
  • Made remainder of buttons 2 lines high. It looks better with them all converted. Will need to make new screenshots in the docs.
  • Pulling across fix/enahancement from 4.61.0.197. Mouseover headers for Table Elements are now set properly according to the theme
  • Set the destination of the "Get a License" button to be a subdomain from PySimpleGUI.com for now so that it forwards.
  • Added a "home" function Renamed "Test Harness" to "Home" Added license.PySimpleGUI.com as the "Get a License" destination Refactored URLs to use URL_ (they point to pysimple.com currently)
  • Centered text (because I know Tim will point it out if I don't)
  • Added no_buffering option to popup_animated
  • Removed use of the gobal variable version of version number.
  • New initial install screen (still has the second one we're removing... posting just to test the first one)
  • New key entry during install screen... I was using that same window when the license expired so will need to fix that.
  • Changed ok/cancel size and placement in install window. Changed multiline size in key entry
  • Changed the Trial Period started window to Tim's design. Changed all of the "Ok" buttons in the 5.0 portion of the code to be 6 chars wide. Will do with other buttons too as I find them.
  • Changed signature verification code. If file doesn't exist, then skip the verification
  • Reworking Home Window. Changed to using a timer to drive the GIF rather than read timeout. Commented out the graph animation. It slows down our window anyway and won't be visible with new layout Moved all the version stuff under a version tab. The rebuild has begun! Won't take too long....
  • More major reworking of the home window
  • Moved Upgrade From GitHub button... OMG what a difference!
  • Moved signup into the Versions tab. It's getting there!
  • Changed watermark on windows from Secure to Verified and Insecure to Suspicious. Added a graphic next to the license in Home Window
  • Added license type and Sign Up button to the "Versions" tab
  • Awesome changes to the versions and license tab. It's looking FANTASTIC. Changed the hearts next to Python version number to take you to the Python.org download page.
  • New "certificate" graphic with a red TRIAL indicator
  • Finished the license tab display for Distribution keys. Now correctly shows the version number the key is good for and number of days until it expires
  • LOTS of changes in realtime with Tim in a 2.5 hour long call. Many dialog windows and the Hom Window changed
  • Updated the tools list of repos to use the private repos and PyPI Updated the pip install of tools/packages to show the version number at the end of the install. This was recently added to all application installs of PySimpleGUI 5 too.
  • Compressed the license image to save space in the code. Split the License Tab into a tab for Developer Key and one for Distribution Key. Not quite done, but close enough to see how it looks.
  • Fixed distribution key expired bug. They should never expire
  • Implemented the "Flip back and forth" split tab design for the Distribution and Developer license tabs in the Home Window
  • Padded out the Developer Key tab when a Distribution key is in use so that the flipping between tabs is seamless
  • Trial Period Watermark on all windows.... Added a tooltip AND made clickable. When clicked, opens the webpage to get a license key. Works on non-blocking windos too!
  • Trial Period Watermark - Changed text and changed the destination when clicked
  • Fixed watermark background colors so that they match the window's background color. Added changing cursor to a hand when hovering over the Trial Period Watermark. Fixed simple hack users could have used to disable the trial period watermark.
  • Fixed broken version watermark. Needed to add () to get the ternary operator to do what I was after. Lesson learned in using () in this way!
  • NEW Exec API call that will help with all demo pograms and applications... execute_pip_install_package. It will pip install with a nice output window
  • Added ability for user to specify the interpreter for the pip install when calling execute_pip_install_package
  • Added parsing of actual package being installed in the execute_pip_install_package function. This allows for long security tokens to be included
  • Improved window movement thanks to Jason!
  • Fixed the Move-All-Windows code for grab anywhere and control click window movements. Now both grab anywhere and control drag move smoother
  • Removed test code that was setting move all windows = True, cleaned up code removed prints
  • Changed trial period watermark
  • Fixed problems in the Distribution & Developer key tabs (wrong date, missing name, etc). I THINK those tabs are DONE now!
  • Fixed error in execute_pip_install_package when a long pip command ending in #egg was provided. Was not correctly removing final quote. Replaced logic that looks for a package name when a long pip command if found. Fixed problems looking for 3.6, 3.7. Removed all of the "install a tool" code and used the new exec pip install function instead EXIT application when a valid Developer Key is entered. Code was asking user to restart. Now it exitsand tells user to restart.
  • Added init for _mouse_offset_x and y in case tkinter doesn't call the mouse down callback
  • Added doctring and destroy previous right click menu to set_right_click_menu
  • Added code so that warning is not shown when getting package version number for Python 3.7
  • Version bump while working on supporting 3.13. Changed first comment block from a quoted comment to each line commented
  • New security token after github cancelled our old one. It's needed for all pip installs of the sensitive items.
  • NEW Security token for github that's restricted only to the deployment repo
  • NEW Security token for github that's restricted only to the deployment repo - NOTE this breaks the pip install of the "sensitive tools" for the time being
  • Changed Sizer element to use a Canvas. Made this changes to PySimpleGUI 4 today as well
  • Added new constant TITLEBAR_KEY, an enhancement requested by a user.
  • Added execute_pip_check_package_is_installed to complete the SDK support for packages and pip
  • Added the error dialog that displays several different license error conditions
  • Fixed docstring for execute_command_subprocess. The command description was incorrect
  • Added command psgwatermarkon and psgwatermarkoff so that it's much easier to control the watermark display using the command line rather than the GUI
  • Fixed bug in psgwatermarkon/off newly added code
  • Added back the accidently deleted security check!! YIKES
  • Reworded the security failure popup. Added top-level filename to the security failure popup.
  • If in the trial period, the set the window's minimum size to be the initially created size. This WILL break some applications, but only if in trial period
  • NEW Exec API call to restart a program (have to pass in the filename for now). It's a decent error recovery mechanism
  • Changed the pysimple.com domains into PySimpleGUI.com subdomains
  • Removed all of the built-in test keys, the button that deletes the trial period, the ability to modify the trial remaining days. Getting code into final release form... all these testing capabilities have to go and instead implement them as utilities.
  • Fix in execute_command_subprocess. If command is none or blank, return None without showing an error.
  • Fix in execute_command_subprocess. If command is none or blank, return None without showing an error.
  • Made Debug Window resizable....TODO - need to make a decision about enabling debugger at startup
  • Fixed crash in getting into global settings caused by removing the right click menu
  • Image.update_animation gets return codes. None if closed window, False if done with all frames. Make it possible to show GIF once. Image.update_animation_no_buffering got the same return codes, but is having some problems... not going to debug right now
  • Changed how Distribution keys are found (THANKS TIM!!)
  • Version bump so that pip installs a new version
  • Removed ability for users to delete the license key from the home window
  • Fixed capitalization in trial period started dialog Fixed text wrap in Final Step dialog
  • Couldn't resist adding Tim's awesome idea of automatically printing the event and values variables. Added a new Window object parm to turn it on. NEW IN PSG 5!
  • Fixed dialog for valid key entered. Changed name of license graphic to be all upper case
  • As promised, the built-in debugger is being disabled by default. Added a new Tab to the global settings that controls the debugger AND the new print event values setting
  • Added spaces before the values dictionary when printed using the new print feature
  • One more global setting to turn off timeout event printing (oy.... adding TOO many new features!)
  • Removed the PSG Tools tab from the Home Window. Continuing to try to get to NO MORE CODE CHANGES!
  • Frame element - now about to have nested rows like the layouts. It enables more list comprehensation constructs. execute_restart - added parms parm. Fixed problem that would happen if initially launched using pythonw.
  • Changed Upgrade from GitHub button to read "Get Latest Development Build" Changed text on "GitHub" tab to be "Report a Problem"
  • Bumping version number to test the new build toolchain that is now creating and uploading wheels.... next will be writing code to install the wheel
  • Changed the upgrade from github to use the NEW PIP install from PySimpleGUI.net! LOTS of changes
  • One final version bump to get the full end to end engineering build code tested
  • More build and wheel testing
  • Added force_reinstall parm to execute_pip_install_package and made the upgrade from GitHub force reinstall (for now...this will be very important later)
  • Adding exception handline and print in the upgrade PySimpleGUI code to debug Larry's problem
  • Display the long version descrpition in the Home Window rather than just the numerical one
  • First post index change release for testing of this long version change
  • Docstring fix and test for "/" when parsing a .whl file in execute_pip_install_package
  • Added Priority Support Code to the GitHub Issue GUI interface
  • Show error instead of exiting when get an error trying to upgrade to development build using pip
  • Added version of the latest development build version to the Home Window
  • New version needed to test the display of build version number in home window
  • Added latest PyPI release version to home window Fixed problem of writing system create time. We do NOT want to do this on Trinket nor Replit
  • Added execute_pip_get_pypi_package_version to our SDK by changing our private function into a public one
  • Moved upgrade pip code up in the exec function so 2 windows don't appear
  • Removed the GitHub Issue validation check so that we can more easily log issues to the PSG5 GitHub
  • Added the Classifiers "Framework :: PySimpleGUI" and "Framework :: PySimpleGUI::5" to the setup.py file
  • Added "Show in Explorer" to MENU_RIGHT_CLICK_EDITME_VER_EXIT

5.0.2 14-Feb-2024

  • Changed constant DEFAULT_PROGRESS_BAR_COMPUTE that was renamed (evidently accidently)
  • New PSG5_LOGO image and added to Home Window

5.0.3 3-Mar-2024

Contains changes from development builds:

  • Changed version number to 4 digits so that we can do development builds on top of the PyPI versions
  • Tree.update - new parameter to expand/close a node with a key specified
  • Added more info to Home Window
  • Added ability to see release notes for the development build when upgrading in Home Window
  • Button layout change for dev build windows
  • Added platform & platform version to Home Window
  • Added Clear and Paste Buttons to key input tab in Home Window
  • Automatically clean up keys that are pasted in Home Window
  • Multiline support for popup_get_text. If size height > 1 a Multiline element is used
  • Fix error a very small number of keys with certain chars experienced
  • Added remove_tooltip method to Elements
  • Changed implementation of remove_tooltip. If text is set to None, then no tooltip will be shown.

5.0.4 1-Apr-2024

  • popup_get_text - setting focus so that the window focuses immediate and the cursor goes to the input. Something about modal wasn't doing this.
  • execute_restart - changed how the restart is executed. Now uses the execute python call and works corectly. execute_restart(file) is a handy pattern
  • changed "development build" to "maintanence release"... documenation changes underway to match.
  • fixed key error message
  • Changed Sign Up to Register. Added Paste button to help paste keys.
  • Switched away from subscription service
  • Added new license (ver 1.1) to the release package so that it's installed with the PySimpleGUI module
  • Fixed bug in license display in Home Window

5.0.5 2-Jun-2024

  • Fixed open GitHub issue window so that the checklist matches the newest on GitHub
  • Fix for ButtonMenu not clearing the value dictionary entry after the event is returned. Used to work this way but broke along the way.
  • Added set_hscroll_position for elements
  • NEW FEATURE added - parameter repeating_timer_ms added to the Window object. Causes a repeating timer to be started.
  • Uncommented line of code that imports askcolor from tkinter. Not sure why it was commented out
  • Fix for bug that was showing trial expired in Home Window. Added new function dict_to_string to format dictionaries nicely
  • Changed function dict_to_string to use the pprint.pformat function rather the reinvent the wheel this time. At least my version did right justify keys in a field the width of the max key length. :-)
  • New option in global settings to control if formatted dictionary is printed when the automatic "print event values" feature is enabled
  • Changed how Input.update select parm works:
    • If set to True, then the input is selected (highlighted)
    • The new addition is that if False, it clears the selection
  • Added arrow and arrow_type to Graph.draw_line method
  • Made aliases for HorizontalSeparator using word "Line" (HorizontalLine, HLine, Line)
  • Updated the checklist in the builtin GitHub Issue logger to use the newest checklist. Was using an old one.
  • Changed docstring for Table element and others that have "Select Mode" parameter to str
  • Added right_click_menu paramter to Combo element
  • Added window.right_click_menu_element. Will either be None or the element that was right clicked if right click menu used
  • Fix in def dict_to_string. The pformat call didn't add the sort_dict parm until Python 3.8 so need to check python ver
  • Made priority support code field in markdown for GitHub issue be the same level as the manual form on GitHub
  • Added new function execute_pip_get_local_package_version so that local version of pip installed package can be easily obtained
  • Changed execute_command_subprocess so that the interpreter can have spaces for things like parameters (i.e. py -3.11)
  • Changed the function execute_pip_get_local_package_version to use the tempfile package so that there can be multiple requests outstanding at a time
  • Fixed all links to the online documenation in the built-in SDK Call Reference Window (You know about this window, right?)
    • Type psghelp from the command line.
    • Or from the Home Window, click the help tab and the button "SDK Reference Window"