Release 4.49.0

This commit is contained in:
PySimpleGUI 2021-09-30 15:11:14 -04:00
parent 79177a2d63
commit 7c406d917e
8 changed files with 751 additions and 266 deletions

View File

@ -1,23 +1,11 @@
#!/usr/bin/python3
version = __version__ = "4.48.0.5 Unreleased"
version = __version__ = "4.49.0 Released 30-Sept-2021"
_change_log = """
Changelog since 4.48.0 release to PyPI on 25 Sept 2021
4.48.0.1
Image.update_animation_no_buffering - bug fix - wasn't checking timer between frames (DOH!)
4.48.0.2
one_line_progress_meter - no longer returns a not OK when max reached. Makes the user if statements much easier to get only cancel as False
4.48.0.3
popup_get_file - fixed bug when show_hidden is set. Added docstring
Added popup_get_file, get_folder, get_data to the test harness under the popups tab
Changed docstring for Multiline default value to Any and added a cast to string
4.48.0.4
More test harness additions
4.48.0.5
VPush and VP element aliases added for VStretch
Changelog since 4.49.0 release to PyPI on 30 Sept 2021
"""
__version__ = version.split()[0] # For PEP 396 and PEP 345

File diff suppressed because it is too large Load Diff

View File

@ -3,9 +3,6 @@
<h1 align="center">Python GUIs for Humans</h1>
</p>
<!-- Default Statcounter code for PySimpleGUI
http://www.PySimpleGUI.com -->
<script type="text/javascript">
var sc_project=12622535;
var sc_invisible=1;
@ -20,7 +17,6 @@ target="_blank"><img class="statcounter"
src="https://c.statcounter.com/12622535/0/1d3e2cc1/1/"
alt="Web Analytics Made Easy - Statcounter"
referrerPolicy="no-referrer-when-downgrade"></a></div></noscript>
<!-- End of Statcounter Code -->
## PyPI Statistics & Versions
@ -1454,6 +1450,9 @@ Preview of popups:
Popup - Display a popup Window with as many parms as you wish to include. This is the GUI equivalent of the
"print" statement. It's also great for "pausing" your program's flow until the user can read some error messages.
If this popup doesn't have the features you want, then you can easily make your own. Popups can be accomplished in 1 line of code:
choice, _ = sg.Window('Continue?', [[sg.T('Do you want to continue?')], [sg.Yes(s=10), sg.No(s=10)]], disable_close=True).read(close=True)
```
popup(args=*<1 or N object>,
title = None,
@ -1470,7 +1469,7 @@ popup(args=*<1 or N object>,
font = None,
no_titlebar = False,
grab_anywhere = False,
keep_on_top = False,
keep_on_top = None,
location = (None, None),
any_key_closes = False,
image = None,
@ -1538,7 +1537,7 @@ popup_scrolled(args=*<1 or N object>,
non_blocking = False,
no_titlebar = False,
grab_anywhere = False,
keep_on_top = False,
keep_on_top = None,
font = None,
image = None,
icon = None,
@ -1608,7 +1607,7 @@ popup_no_wait(args=*<1 or N object>,
font = None,
no_titlebar = False,
grab_anywhere = False,
keep_on_top = False,
keep_on_top = None,
location = (None, None),
image = None,
modal = False)
@ -1673,7 +1672,7 @@ popup_get_text(message,
font = None,
no_titlebar = False,
grab_anywhere = False,
keep_on_top = False,
keep_on_top = None,
location = (None, None),
image = None,
modal = True)
@ -1734,13 +1733,14 @@ popup_get_file(message,
font = None,
no_titlebar = False,
grab_anywhere = False,
keep_on_top = False,
keep_on_top = None,
location = (None, None),
initial_folder = None,
image = None,
files_delimiter = ";",
modal = True,
history = False,
show_hidden = True,
history_setting_filename = None)
```
@ -1771,6 +1771,7 @@ Parameter Descriptions:
| str | files_delimiter | String to place between files when multiple files are selected. Normally a ; |
| 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 = True |
| bool | history | If True then enable a "history" feature that will display previous entries used. Uses settings filename provided or default if none provided |
| bool | show_hidden | If True then enables the checkbox in the system dialog to select hidden files to be shown |
| str | history_setting_filename | Filename to use for the User Settings. Will store list of previous entries in this settings file |
| str or None | **RETURN** | string representing the file(s) chosen, None if cancelled or window closed with X
@ -1812,7 +1813,7 @@ popup_get_folder(message,
font = None,
no_titlebar = False,
grab_anywhere = False,
keep_on_top = False,
keep_on_top = None,
location = (None, None),
initial_folder = None,
image = None,
@ -1921,7 +1922,7 @@ one_line_progress_meter(title,
border_width = None,
grab_anywhere = False,
no_titlebar = False,
keep_on_top = False,
keep_on_top = None,
no_button = False)
```
@ -8982,14 +8983,59 @@ Image element - Simpler to use
- UserSettings APIs
- Changed the repr method of the user settings object to use the pretty printer to format the dictionary information into a nicer string
## Upcoming
## 4.48.0 PySimpleGUI 25-Sept-2021
- Highlights:
- Table clicking
- Push element
- p = pad in layouts
The future for PySimpleGUI looks bright!
* Table Element - Feature expansion
* enable_click_events - New parameter and associated events
* If parm is True, then events will be generated that are tuples when a user clicks on the table and headers
* The event format is a tuple: ('-TABLE KEY-', '+CICKED+', (3, 3)) 3 items in the tuple:
1. The Table's key
2. "An additional event name" in this case I've called it "+CLICKED+"
3. The (row, col)
* The (row, col) will match the user's data unless one of these is clicked:
* A header (will return a row of -1)
* A row number (these are artificially generated numbers) and has a column of -1
* set_options - new keep_on_top option. Makes all windows you create, including popups, have keep_on_top set to True
* User Settings APIs
* user_settings_object() - returns the UserSettings object that is used by the function interface for the user_settings APIs
* Improved print by returning the pprint formattted dictionary rather than just the string version
* Docstrings
* set_clipboard takes str or bytes
* ProgressBar - better size parm description
* Fixed return type for Window.read_all_windows
* ProgressBar - new size_px parameter allows you to specify your meter directly in pixels
* pad alias! Lazy coders and those wanting ultra-compact layouts may like this one
* You can use the parameter p just like the parameter pad
* pad joins the parameters size (s) and key (k)
* Push Element
* Alias for Stretch - they are the exact same thing
* Stretch was a term used by Qt.
* Push "feels" more like what it does. It "pushes" other elements around
* Alias is P - like many other Elements, it has a 1-letter alias that can be used to write more compact code
* Removed printing of Mac warnings about global settings at the startup
* Redefined the Debug button to be a simple button with a the graphic as before
* Added a right click menu to the SDK reference so the window can be closed if moved off the screen too far
The overall road-map is a simple one:
* Continue to build-out the tkinter port
* Continue to bring features forward from the tkinter port to the other ports (Qt, WxPython, Remi)
* Add mobile applications (native built applications instead of PyDriod3 that's used today)
## 4.49.0 PySimpleGUI 30-Sept-2021
- Highlights
- popup_get_file bug fix (primary reason for a quick release)
- VPush
- popup_get_file fix
- VPush = VP = VStretch
- Same concept as Push element except in the Vertical direction
- `Image.update_animation_no_buffering` bug fix wasn't checking timer between frames (DOH!)
- `one_line_progress_meter` no longer returns a not OK when max reached. Makes the user if statements much easier to get only cancel as False
- Note that this is a backward compatibility problem is you are relying on a False being returned when the counter reaches the maximum
- `popup_get_file` fixed bug when `show_hidden` is set. Added to docstring
- Added `popup_get_file`, get_folder, get_data to the test harness under the popups tab
- Changed docstring for Multiline default value to Any and added a cast to string
- Added more tests and information to the `sg.main()` test harness
## Code Condition
@ -9031,7 +9077,7 @@ From the start of the PSG project, tkinter was not meant to be the only underlyi
# Author & Owner
Written and owned by PySimpleGUI Inc
Written and owned by PySimpleGUI.
This documentation as well as all PySimpleGUI documentation and code is Copyright 2018, 2019, 2020, 2021 by PySimpleGUI
@ -9048,6 +9094,7 @@ Please note that this license does **not** allow you to break copyright laws. Y
There are a number of people that have been key contributors to this project both directly and indirectly. Paid professional help has been deployed a number of critical times in the project's history. This happens in the life of software development from time to time.
If you've helped, I sure hope that you feel like you've been properly thanked. That you have been recognized. If not, then say something.... drop an email to comments@PySimpleGUI.org.
Please see the readme file for usage of other Python packages by this project.
## Support
@ -9057,6 +9104,8 @@ The project is self-funded and there are ongoing costs just to offer the softwar
## Legal
All documentation in this file and in the PySimpleGUI GitHub account are copyright 2021 by PySimpleGUI Tech LLC. The PySimpleGUI code, the demo programs and other source code in the PySimpleGUI account also have a copyright owned by PySimpleGUI Inc.
All documentation in this file and in the PySimpleGUI GitHub account are copyright 2021 by PySimpleGUI Tech LLC. The PySimpleGUI code, the demo programs and other source code in the PySimpleGUI account also have are copyright owned by PySimpleGUI
The name "PySimpleGUI" and the PySimpleGUI logo are Trademarked
When in doubt, ask.

View File

@ -32,6 +32,22 @@ HOW DO I INSERT IMAGES ???
</p>
<!-- Start of SC -->
<script type="text/javascript">
var sc_project=12622535;
var sc_invisible=1;
var sc_security="1d3e2cc1";
</script>
<script type="text/javascript"
src="https://www.statcounter.com/counter/counter.js"
async></script>
<noscript><div class="statcounter"><a title="Web Analytics
Made Easy - Statcounter" href="https://statcounter.com/"
target="_blank"><img class="statcounter"
src="https://c.statcounter.com/12622535/0/1d3e2cc1/1/"
alt="Web Analytics Made Easy - Statcounter"
referrerPolicy="no-referrer-when-downgrade"></a></div></noscript>
<!-- End of SC -->
## PyPI Statistics & Versions

View File

@ -2130,16 +2130,59 @@ Image element - Simpler to use
- Changed the repr method of the user settings object to use the pretty printer to format the dictionary information into a nicer string
## Upcoming
## 4.48.0 PySimpleGUI 25-Sept-2021
- Highlights:
- Table clicking
- Push element
- p = pad in layouts
The future for PySimpleGUI looks bright!
* Table Element - Feature expansion
* enable_click_events - New parameter and associated events
* If parm is True, then events will be generated that are tuples when a user clicks on the table and headers
* The event format is a tuple: ('-TABLE KEY-', '+CICKED+', (3, 3)) 3 items in the tuple:
1. The Table's key
2. "An additional event name" in this case I've called it "+CLICKED+"
3. The (row, col)
* The (row, col) will match the user's data unless one of these is clicked:
* A header (will return a row of -1)
* A row number (these are artificially generated numbers) and has a column of -1
* set_options - new keep_on_top option. Makes all windows you create, including popups, have keep_on_top set to True
* User Settings APIs
* user_settings_object() - returns the UserSettings object that is used by the function interface for the user_settings APIs
* Improved print by returning the pprint formattted dictionary rather than just the string version
* Docstrings
* set_clipboard takes str or bytes
* ProgressBar - better size parm description
* Fixed return type for Window.read_all_windows
* ProgressBar - new size_px parameter allows you to specify your meter directly in pixels
* pad alias! Lazy coders and those wanting ultra-compact layouts may like this one
* You can use the parameter p just like the parameter pad
* pad joins the parameters size (s) and key (k)
* Push Element
* Alias for Stretch - they are the exact same thing
* Stretch was a term used by Qt.
* Push "feels" more like what it does. It "pushes" other elements around
* Alias is P - like many other Elements, it has a 1-letter alias that can be used to write more compact code
* Removed printing of Mac warnings about global settings at the startup
* Redefined the Debug button to be a simple button with a the graphic as before
* Added a right click menu to the SDK reference so the window can be closed if moved off the screen too far
The overall road-map is a simple one:
* Continue to build-out the tkinter port
* Continue to bring features forward from the tkinter port to the other ports (Qt, WxPython, Remi)
* Add mobile applications (native built applications instead of PyDriod3 that's used today)
## 4.49.0 PySimpleGUI 30-Sept-2021
- Highlights
- popup_get_file bug fix (primary reason for a quick release)
- VPush
- popup_get_file fix
- VPush = VP = VStretch
- Same concept as Push element except in the Vertical direction
- `Image.update_animation_no_buffering` bug fix wasn't checking timer between frames (DOH!)
- `one_line_progress_meter` no longer returns a not OK when max reached. Makes the user if statements much easier to get only cancel as False
- Note that this is a backward compatibility problem is you are relying on a False being returned when the counter reaches the maximum
- `popup_get_file` fixed bug when `show_hidden` is set. Added to docstring
- Added `popup_get_file`, get_folder, get_data to the test harness under the popups tab
- Changed docstring for Multiline default value to Any and added a cast to string
- Added more tests and information to the `sg.main()` test harness
## Code Condition
@ -2182,7 +2225,7 @@ From the start of the PSG project, tkinter was not meant to be the only underlyi
# Author & Owner
Written and owned by PySimpleGUI Inc
Written and owned by PySimpleGUI.
This documentation as well as all PySimpleGUI documentation and code is Copyright 2018, 2019, 2020, 2021 by PySimpleGUI
@ -2199,6 +2242,7 @@ Please note that this license does **not** allow you to break copyright laws. Y
There are a number of people that have been key contributors to this project both directly and indirectly. Paid professional help has been deployed a number of critical times in the project's history. This happens in the life of software development from time to time.
If you've helped, I sure hope that you feel like you've been properly thanked. That you have been recognized. If not, then say something.... drop an email to comments@PySimpleGUI.org.
Please see the readme file for usage of other Python packages by this project.
## Support
@ -2208,6 +2252,8 @@ The project is self-funded and there are ongoing costs just to offer the softwar
## Legal
All documentation in this file and in the PySimpleGUI GitHub account are copyright 2021 by PySimpleGUI Tech LLC. The PySimpleGUI code, the demo programs and other source code in the PySimpleGUI account also have a copyright owned by PySimpleGUI Inc.
All documentation in this file and in the PySimpleGUI GitHub account are copyright 2021 by PySimpleGUI Tech LLC. The PySimpleGUI code, the demo programs and other source code in the PySimpleGUI account also have are copyright owned by PySimpleGUI
The name "PySimpleGUI" and the PySimpleGUI logo are Trademarked
The name "PySimpleGUI" and the PySimpleGUI logo are Trademarked
When in doubt, ask.

View File

@ -1,21 +1,38 @@
![LOGO](https://raw.githubusercontent.com/PySimpleGUI/PySimpleGUI/master/images/for_readme/Logo%20with%20text%20for%20GitHub%20Top.png)
<!-- Start of ST -->
<script type="text/javascript">
var sc_project=12622535;
var sc_invisible=1;
var sc_security="1d3e2cc1";
</script>
<script type="text/javascript"
src="https://www.statcounter.com/counter/counter.js"
async></script>
<noscript><div class="statcounter"><a title="Web Analytics
Made Easy - Statcounter" href="https://statcounter.com/"
target="_blank"><img class="statcounter"
src="https://c.statcounter.com/12622535/0/1d3e2cc1/1/"
alt="Web Analytics Made Easy - Statcounter"
referrerPolicy="no-referrer-when-downgrade"></a></div></noscript>
<!-- End of ST -->
# ELEMENT AND FUNCTION CALL REFERENCE
Here you will find the details for all Elements, Objects, and Functions that are available to you. If you want to use a complex element and don't understand the parameters, then this is the right place to come. For every element you're shown the parameters used to create it as well as all methods available to call.
## Currently PySimpleGUI (tkinter) only
## This call reference document covers the tkinter port
This documentation is created using the PySimpleGUI.py file which means it's based on the tkinter code. Some of the calls are different, might not exist at all, or there may be more methods/functions for the other PySimpleGUI ports (Qt, Wx, Web).
Work is underway to get the PySimpleGUIQt docstrings completed and corrected.
The PySimpleGUIQt call reference is located in another location.
## Caution - Some functions / methods may be internal only yet exposed in this documentation
This section of the documentation is generated directly from the source code. As a result, sometimes internal only functions or methods that you are not supposed to be calling are accidentally shown in this documentation. Hopefully these accidents don't happen often.
Here are all of the Elements, the Window & SystemTray classes, and all functions
# Here are all of the Elements, the Window class, and all functions
---------
@ -1943,13 +1960,6 @@ The following methods are here for backwards compatibility reference. You will
---------
## Stretch Element
<!-- <+func.Stretch+> -->
---------
## Tab Element
<!-- <+Tab.doc+> -->
<!-- <+Tab.__init__+> -->
@ -2430,12 +2440,30 @@ The following methods are here for backwards compatibility reference. You will
### visible
<!-- <+VerticalSeparator.visible+> -->
---------
## VStretch Element
<!-- <+func.VStretch+> -->
---------
--------------------------------------
# The `Push` / `Stretch` Elements
These elements `Push` and `VPush` as aliases for `Stretch` and `VStretch` and are implemented using a function rather than a class. They're not meant to be manipulated like other elements. They have a functional role in a layout that is much like the "Layout Helper Functions" (pin, vtop, etc).
The name `Stretch` originally appeared in the PySimpleGUI APIs when the PySimpleGUIQt port was added.
In the Sept 2021 timeframe, a functioning version of this element appeared in the tkinter port, along with some aliases and a vertical addition.
The PySimpleGUI documentation, demos, etc, will be using the names `Push` and `VPush`.
## Push-style Elements Use
These elements modify the placement of other elements inside of containers. As the name implies, these elements `Push` and `VPush` will "push" other elements around. `Push` works in the horizontal direction, `VPush` in the vertical.
## Push Element (alias include `P` and `Stretch`)
<!-- <+func.Push+> -->
## VPush Element (aliases include `VP` and `VStretch`)
<!-- <+func.VPush+> -->
### These are non-PEP8 Compliant Methods - do NOT use

File diff suppressed because it is too large Load Diff

View File

@ -3,6 +3,21 @@
<h1 align="center">Python GUIs for Humans</h1>
</p>
<script type="text/javascript">
var sc_project=12622535;
var sc_invisible=1;
var sc_security="1d3e2cc1";
</script>
<script type="text/javascript"
src="https://www.statcounter.com/counter/counter.js"
async></script>
<noscript><div class="statcounter"><a title="Web Analytics
Made Easy - Statcounter" href="https://statcounter.com/"
target="_blank"><img class="statcounter"
src="https://c.statcounter.com/12622535/0/1d3e2cc1/1/"
alt="Web Analytics Made Easy - Statcounter"
referrerPolicy="no-referrer-when-downgrade"></a></div></noscript>
## PyPI Statistics & Versions
| TK | TK 2.7 | Qt| WxPython | Web (Remi) |
@ -1435,6 +1450,9 @@ Preview of popups:
Popup - Display a popup Window with as many parms as you wish to include. This is the GUI equivalent of the
"print" statement. It's also great for "pausing" your program's flow until the user can read some error messages.
If this popup doesn't have the features you want, then you can easily make your own. Popups can be accomplished in 1 line of code:
choice, _ = sg.Window('Continue?', [[sg.T('Do you want to continue?')], [sg.Yes(s=10), sg.No(s=10)]], disable_close=True).read(close=True)
```
popup(args=*<1 or N object>,
title = None,
@ -1451,7 +1469,7 @@ popup(args=*<1 or N object>,
font = None,
no_titlebar = False,
grab_anywhere = False,
keep_on_top = False,
keep_on_top = None,
location = (None, None),
any_key_closes = False,
image = None,
@ -1519,7 +1537,7 @@ popup_scrolled(args=*<1 or N object>,
non_blocking = False,
no_titlebar = False,
grab_anywhere = False,
keep_on_top = False,
keep_on_top = None,
font = None,
image = None,
icon = None,
@ -1589,7 +1607,7 @@ popup_no_wait(args=*<1 or N object>,
font = None,
no_titlebar = False,
grab_anywhere = False,
keep_on_top = False,
keep_on_top = None,
location = (None, None),
image = None,
modal = False)
@ -1654,7 +1672,7 @@ popup_get_text(message,
font = None,
no_titlebar = False,
grab_anywhere = False,
keep_on_top = False,
keep_on_top = None,
location = (None, None),
image = None,
modal = True)
@ -1715,13 +1733,14 @@ popup_get_file(message,
font = None,
no_titlebar = False,
grab_anywhere = False,
keep_on_top = False,
keep_on_top = None,
location = (None, None),
initial_folder = None,
image = None,
files_delimiter = ";",
modal = True,
history = False,
show_hidden = True,
history_setting_filename = None)
```
@ -1752,6 +1771,7 @@ Parameter Descriptions:
| str | files_delimiter | String to place between files when multiple files are selected. Normally a ; |
| 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 = True |
| bool | history | If True then enable a "history" feature that will display previous entries used. Uses settings filename provided or default if none provided |
| bool | show_hidden | If True then enables the checkbox in the system dialog to select hidden files to be shown |
| str | history_setting_filename | Filename to use for the User Settings. Will store list of previous entries in this settings file |
| str or None | **RETURN** | string representing the file(s) chosen, None if cancelled or window closed with X
@ -1793,7 +1813,7 @@ popup_get_folder(message,
font = None,
no_titlebar = False,
grab_anywhere = False,
keep_on_top = False,
keep_on_top = None,
location = (None, None),
initial_folder = None,
image = None,
@ -1902,7 +1922,7 @@ one_line_progress_meter(title,
border_width = None,
grab_anywhere = False,
no_titlebar = False,
keep_on_top = False,
keep_on_top = None,
no_button = False)
```
@ -8963,14 +8983,59 @@ Image element - Simpler to use
- UserSettings APIs
- Changed the repr method of the user settings object to use the pretty printer to format the dictionary information into a nicer string
## Upcoming
## 4.48.0 PySimpleGUI 25-Sept-2021
- Highlights:
- Table clicking
- Push element
- p = pad in layouts
The future for PySimpleGUI looks bright!
* Table Element - Feature expansion
* enable_click_events - New parameter and associated events
* If parm is True, then events will be generated that are tuples when a user clicks on the table and headers
* The event format is a tuple: ('-TABLE KEY-', '+CICKED+', (3, 3)) 3 items in the tuple:
1. The Table's key
2. "An additional event name" in this case I've called it "+CLICKED+"
3. The (row, col)
* The (row, col) will match the user's data unless one of these is clicked:
* A header (will return a row of -1)
* A row number (these are artificially generated numbers) and has a column of -1
* set_options - new keep_on_top option. Makes all windows you create, including popups, have keep_on_top set to True
* User Settings APIs
* user_settings_object() - returns the UserSettings object that is used by the function interface for the user_settings APIs
* Improved print by returning the pprint formattted dictionary rather than just the string version
* Docstrings
* set_clipboard takes str or bytes
* ProgressBar - better size parm description
* Fixed return type for Window.read_all_windows
* ProgressBar - new size_px parameter allows you to specify your meter directly in pixels
* pad alias! Lazy coders and those wanting ultra-compact layouts may like this one
* You can use the parameter p just like the parameter pad
* pad joins the parameters size (s) and key (k)
* Push Element
* Alias for Stretch - they are the exact same thing
* Stretch was a term used by Qt.
* Push "feels" more like what it does. It "pushes" other elements around
* Alias is P - like many other Elements, it has a 1-letter alias that can be used to write more compact code
* Removed printing of Mac warnings about global settings at the startup
* Redefined the Debug button to be a simple button with a the graphic as before
* Added a right click menu to the SDK reference so the window can be closed if moved off the screen too far
The overall road-map is a simple one:
* Continue to build-out the tkinter port
* Continue to bring features forward from the tkinter port to the other ports (Qt, WxPython, Remi)
* Add mobile applications (native built applications instead of PyDriod3 that's used today)
## 4.49.0 PySimpleGUI 30-Sept-2021
- Highlights
- popup_get_file bug fix (primary reason for a quick release)
- VPush
- popup_get_file fix
- VPush = VP = VStretch
- Same concept as Push element except in the Vertical direction
- `Image.update_animation_no_buffering` bug fix wasn't checking timer between frames (DOH!)
- `one_line_progress_meter` no longer returns a not OK when max reached. Makes the user if statements much easier to get only cancel as False
- Note that this is a backward compatibility problem is you are relying on a False being returned when the counter reaches the maximum
- `popup_get_file` fixed bug when `show_hidden` is set. Added to docstring
- Added `popup_get_file`, get_folder, get_data to the test harness under the popups tab
- Changed docstring for Multiline default value to Any and added a cast to string
- Added more tests and information to the `sg.main()` test harness
## Code Condition
@ -9012,7 +9077,7 @@ From the start of the PSG project, tkinter was not meant to be the only underlyi
# Author & Owner
Written and owned by PySimpleGUI Inc
Written and owned by PySimpleGUI.
This documentation as well as all PySimpleGUI documentation and code is Copyright 2018, 2019, 2020, 2021 by PySimpleGUI
@ -9029,6 +9094,7 @@ Please note that this license does **not** allow you to break copyright laws. Y
There are a number of people that have been key contributors to this project both directly and indirectly. Paid professional help has been deployed a number of critical times in the project's history. This happens in the life of software development from time to time.
If you've helped, I sure hope that you feel like you've been properly thanked. That you have been recognized. If not, then say something.... drop an email to comments@PySimpleGUI.org.
Please see the readme file for usage of other Python packages by this project.
## Support
@ -9038,6 +9104,8 @@ The project is self-funded and there are ongoing costs just to offer the softwar
## Legal
All documentation in this file and in the PySimpleGUI GitHub account are copyright 2021 by PySimpleGUI Tech LLC. The PySimpleGUI code, the demo programs and other source code in the PySimpleGUI account also have a copyright owned by PySimpleGUI Inc.
All documentation in this file and in the PySimpleGUI GitHub account are copyright 2021 by PySimpleGUI Tech LLC. The PySimpleGUI code, the demo programs and other source code in the PySimpleGUI account also have are copyright owned by PySimpleGUI
The name "PySimpleGUI" and the PySimpleGUI logo are Trademarked
The name "PySimpleGUI" and the PySimpleGUI logo are Trademarked
When in doubt, ask.