<div style="display: flex; gap: 50px; justify-content: center;">
    <div>
        <img src="https://raw.githubusercontent.com/PySimpleGUI/PySimpleGUI/master/images/for_readme/Logo%20with%20text%20for%20GitHub%20Top.png" alt="Python GUIs for Humans">
        <h1 style="text-align: center;">Python GUIs for Humans</h1>
    </div>
    <div>
        <div>
            <link rel="preconnect" href="https://fonts.googleapis.com">
            <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="">
            <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@400;700&amp;display=swap" rel="stylesheet"> 
        </div>
        <div style="font-family: 'Roboto', sans-serif; background-color: #43ACE9; color: white; height: 400px; width: 250px; border-radius: 20px;">
            <div style="display: flex; padding-top: 10px; justify-content: center;">
                <img style="width: auto; height: 60px; object-fit: cover; padding-right: 0;background-color: transparent;border: none;margin: 0;" src="data:image/png;base64, " alt="idea emoji">
                <div style="font-size: 22px; font-weight: 700; margin-bottom: 0; margin-top: 20px; margin-right: 10px;">Want to master</div>
            </div>
            <div style="font-size: 30px; font-weight: 700; text-align: center; margin-top: 0;">PySimpleGUI?</div>
            <div style="margin-top: 40px;">
                <div style="text-align: center; font-size: 20px; font-weight: 700;">Sign up to the official</div>
                <div style="display: flex; justify-content: center; gap: 10px;">
                    <div style="margin-top: 8px; margin-left: 10px; font-size: 20px; font-weight: 700;">course on</div>
                    <img style="width: auto; height: 40px; object-fit: cover; padding-right: 10px; margin-top: 0;margin: 0;background-color: transparent;border: none;" src="data:image/png;base64, " alt="Udemy logo">
                </div>
                <div style="text-align: center; margin-bottom: 10px; margin-top: 30px; padding: 0px 20px; font-weight: 700; font-size: 16px;">
                    <span style="font-weight: normal;">
                        apply coupon for discount: 
                    </span>
                    4FD91A459D56B1029FF8
                </div>
                <button style="margin: 0 auto; display: block; width: 200px; height: 70px; border-radius: 14px; border: none; padding: 10px; font-size: 18px; background-color: #357296; color: white; cursor: pointer;" onclick="window.open('https://www.udemy.com/course/pysimplegui/?couponCode=4FD91A459D56B1029FF8','_blank');">
                    click here to visit course page
                </button>
            </div>
        </div>
    </div>
</div>


<!-- 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.

## 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).  

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.

# The Elements
---------

## Button Element 
<!-- <+Button.doc+> -->
<!-- <+Button.__init__+> -->

### bind
<!-- <+Button.bind+> -->

### block_focus
<!-- <+Button.block_focus+> -->

### click
<!-- <+Button.click+> -->

### expand
<!-- <+Button.expand+> -->

### get_next_focus
<!-- <+Button.get_next_focus+> -->

### get_previous_focus
<!-- <+Button.get_previous_focus+> -->

### get_size
<!-- <+Button.get_size+> -->

### get_text
<!-- <+Button.get_text+> -->

### grab_anywhere_exclude
<!-- <+Button.grab_anywhere_exclude+> -->

### grab_anywhere_include
<!-- <+Button.grab_anywhere_include+> -->

### hide_row
<!-- <+Button.hide_row+> -->

### key
<!-- <+Button.key+> -->

### metadata
<!-- <+Button.metadata+> -->

### set_cursor
<!-- <+Button.set_cursor+> -->

### set_focus
<!-- <+Button.set_focus+> -->

### set_size
<!-- <+Button.set_size+> -->

### set_tooltip
<!-- <+Button.set_tooltip+> -->

### set_vscroll_position
<!-- <+Button.set_vscroll_position+> -->

### unbind
<!-- <+Button.unbind+> -->

### unhide_row
<!-- <+Button.unhide_row+> -->

### update
<!-- <+Button.update+> -->

### visible
<!-- <+Button.visible+> -->

### widget
<!-- <+Button.widget+> -->

---------

### These are non-PEP8 Compliant Methods - do NOT use

The following methods are here for backwards compatibility reference.  You will find there are PEP8 versions for each of these methods.  The PEP8 versions will be all lower case and have underscores.

### Click
<!-- <+Button.Click+> -->

### GetText
<!-- <+Button.GetText+> -->

### SetFocus
<!-- <+Button.SetFocus+> -->

### SetTooltip
<!-- <+Button.SetTooltip+> -->

### Update
<!-- <+Button.Update+> -->

---------

## ButtonMenu Element 
<!-- <+ButtonMenu.doc+> -->
<!-- <+ButtonMenu.__init__+> -->


### bind
<!-- <+ButtonMenu.bind+> -->

### block_focus
<!-- <+ButtonMenu.block_focus+> -->

### expand
<!-- <+ButtonMenu.expand+> -->

### get_next_focus
<!-- <+ButtonMenu.get_next_focus+> -->

### get_previous_focus
<!-- <+ButtonMenu.get_previous_focus+> -->

### get_size
<!-- <+ButtonMenu.get_size+> -->

### grab_anywhere_exclude
<!-- <+ButtonMenu.grab_anywhere_exclude+> -->

### grab_anywhere_include
<!-- <+ButtonMenu.grab_anywhere_include+> -->

### hide_row
<!-- <+ButtonMenu.hide_row+> -->

### metadata
<!-- <+ButtonMenu.metadata+> -->

### set_cursor
<!-- <+ButtonMenu.set_cursor+> -->

### set_focus
<!-- <+ButtonMenu.set_focus+> -->

### set_size
<!-- <+ButtonMenu.set_size+> -->

### set_tooltip
<!-- <+ButtonMenu.set_tooltip+> -->

### unbind
<!-- <+ButtonMenu.unbind+> -->

### set_vscroll_position
<!-- <+ButtonMenu.set_vscroll_position+> -->

### unhide_row
<!-- <+ButtonMenu.unhide_row+> -->

### update
<!-- <+ButtonMenu.update+> -->

### visible
<!-- <+ButtonMenu.visible+> -->

### widget
<!-- <+ButtonMenu.widget+> -->


---------

### These are non-PEP8 Compliant Methods - do NOT use

The following methods are here for backwards compatibility reference.  You will find there are PEP8 versions for each of these methods.  The PEP8 versions will be all lower case and have underscores.


### Click
<!-- <+ButtonMenu.Click+> -->

### SetFocus
<!-- <+ButtonMenu.SetFocus+> -->

### SetTooltip
<!-- <+ButtonMenu.SetTooltip+> -->

### Update
<!-- <+ButtonMenu.Update+> -->

---------

## Canvas Element 
<!-- <+Canvas.doc+> -->
<!-- <+Canvas.__init__+> -->

### bind
<!-- <+Canvas.bind+> -->

### block_focus
<!-- <+Canvas.block_focus+> -->

### expand
<!-- <+Canvas.expand+> -->

### get_next_focus
<!-- <+Canvas.get_next_focus+> -->

### get_previous_focus
<!-- <+Canvas.get_previous_focus+> -->

### get_size
<!-- <+Canvas.get_size+> -->

### grab_anywhere_exclude
<!-- <+Canvas.grab_anywhere_exclude+> -->

### grab_anywhere_include
<!-- <+Canvas.grab_anywhere_include+> -->

### hide_row
<!-- <+Canvas.hide_row+> -->

### metadata
<!-- <+Canvas.metadata+> -->

### set_cursor
<!-- <+Canvas.set_cursor+> -->

### set_focus
<!-- <+Canvas.set_focus+> -->

### set_size
<!-- <+Canvas.set_size+> -->

### set_tooltip
<!-- <+Canvas.set_tooltip+> -->

### tk_canvas
<!-- <+Canvas.tk_canvas+> -->

### unbind
<!-- <+Canvas.unbind+> -->

### unhide_row
<!-- <+Canvas.unhide_row+> -->

### visible
<!-- <+Canvas.visible+> -->

### widget
<!-- <+Canvas.widget+> -->

---------

### These are non-PEP8 Compliant Methods - do NOT use

The following methods are here for backwards compatibility reference.  You will find there are PEP8 versions for each of these methods.  The PEP8 versions will be all lower case and have underscores.


### SetFocus
<!-- <+Canvas.SetFocus+> -->

### SetTooltip
<!-- <+Canvas.SetTooltip+> -->

### TKCanvas
<!-- <+Canvas.TKCanvas+> -->

---------

## Checkbox Element 
<!-- <+Checkbox.doc+> -->
<!-- <+Checkbox.__init__+> -->

### bind
<!-- <+Checkbox.bind+> -->

### block_focus
<!-- <+Checkbox.block_focus+> -->

### expand
<!-- <+Checkbox.expand+> -->

### get
<!-- <+Checkbox.get+> -->

### get_next_focus
<!-- <+Checkbox.get_next_focus+> -->

### get_previous_focus
<!-- <+Checkbox.get_previous_focus+> -->

### get_size
<!-- <+Checkbox.get_size+> -->

### grab_anywhere_exclude
<!-- <+Checkbox.grab_anywhere_exclude+> -->

### grab_anywhere_include
<!-- <+Checkbox.grab_anywhere_include+> -->

### hide_row
<!-- <+Checkbox.hide_row+> -->

### key
<!-- <+Checkbox.key+> -->

### metadata
<!-- <+Checkbox.metadata+> -->

### set_cursor
<!-- <+Checkbox.set_cursor+> -->

### set_focus
<!-- <+Checkbox.set_focus+> -->

### set_size
<!-- <+Checkbox.set_size+> -->

### set_tooltip
<!-- <+Checkbox.set_tooltip+> -->

### unbind
<!-- <+Checkbox.unbind+> -->

### unhide_row
<!-- <+Checkbox.unhide_row+> -->

### update
<!-- <+Checkbox.update+> -->

### visible
<!-- <+Checkbox.visible+> -->

### widget
<!-- <+Checkbox.widget+> -->

---------

### These are non-PEP8 Compliant Methods - do NOT use

The following methods are here for backwards compatibility reference.  You will find there are PEP8 versions for each of these methods.  The PEP8 versions will be all lower case and have underscores.

### Get
<!-- <+Checkbox.Get+> -->

### SetFocus
<!-- <+Checkbox.SetFocus+> -->

### SetTooltip
<!-- <+Checkbox.SetTooltip+> -->

### Update
<!-- <+Checkbox.Update+> -->


---------


## Column Element 
<!-- <+Column.doc+> -->
<!-- <+Column.__init__+> -->

### add_row
<!-- <+Column.add_row+> -->

### bind
<!-- <+Column.bind+> -->

### block_focus
<!-- <+Column.block_focus+> -->

### contents_changed
<!-- <+Column.contents_changed+> -->

### expand
<!-- <+Column.expand+> -->

### get_next_focus
<!-- <+Column.get_next_focus+> -->

### get_previous_focus
<!-- <+Column.get_previous_focus+> -->

### get_size
<!-- <+Column.get_size+> -->

### grab_anywhere_exclude
<!-- <+Column.grab_anywhere_exclude+> -->

### grab_anywhere_include
<!-- <+Column.grab_anywhere_include+> -->

### hide_row
<!-- <+Column.hide_row+> -->

### layout
<!-- <+Column.layout+> -->

### key
<!-- <+Column.key+> -->

### metadata
<!-- <+Column.metadata+> -->

### set_cursor
<!-- <+Column.set_cursor+> -->

### set_focus
<!-- <+Column.set_focus+> -->

### set_size
<!-- <+Column.set_size+> -->

### set_tooltip
<!-- <+Column.set_tooltip+> -->

### unbind
<!-- <+Column.unbind+> -->

### set_vscroll_position
<!-- <+Column.set_vscroll_position+> -->

### unhide_row
<!-- <+Column.unhide_row+> -->

### update
<!-- <+Column.update+> -->

### visible
<!-- <+Column.visible+> -->

### widget
<!-- <+Column.widget+> -->


---------

### These are non-PEP8 Compliant Methods - do NOT use

The following methods are here for backwards compatibility reference.  You will find there are PEP8 versions for each of these methods.  The PEP8 versions will be all lower case and have underscores.


### AddRow
<!-- <+Column.AddRow+> -->

### Layout
<!-- <+Column.Layout+> -->

### SetFocus
<!-- <+Column.SetFocus+> -->

### SetTooltip
<!-- <+Column.SetTooltip+> -->

### Update
<!-- <+Column.Update+> -->


---------


## Combo Element 
<!-- <+Combo.doc+> -->
<!-- <+Combo.__init__+> -->

### bind
<!-- <+Combo.bind+> -->

### block_focus
<!-- <+Combo.block_focus+> -->

### expand
<!-- <+Combo.expand+> -->

### get
<!-- <+Combo.get+> -->

### get_next_focus
<!-- <+Combo.get_next_focus+> -->

### get_previous_focus
<!-- <+Combo.get_previous_focus+> -->

### get_size
<!-- <+Combo.get_size+> -->

### grab_anywhere_exclude
<!-- <+Combo.grab_anywhere_exclude+> -->

### grab_anywhere_include
<!-- <+Combo.grab_anywhere_include+> -->

### hide_row
<!-- <+Combo.hide_row+> -->

### key
<!-- <+Combo.key+> -->

### metadata
<!-- <+Combo.metadata+> -->

### set_cursor
<!-- <+Combo.set_cursor+> -->

### set_focus
<!-- <+Combo.set_focus+> -->

### set_size
<!-- <+Combo.set_size+> -->

### set_tooltip
<!-- <+Combo.set_tooltip+> -->

### unbind
<!-- <+Combo.unbind+> -->

### unhide_row
<!-- <+Combo.unhide_row+> -->

### update
<!-- <+Combo.update+> -->

### visible
<!-- <+Combo.visible+> -->

### widget
<!-- <+Combo.widget+> -->


---------

### These are non-PEP8 Compliant Methods - do NOT use

The following methods are here for backwards compatibility reference.  You will find there are PEP8 versions for each of these methods.  The PEP8 versions will be all lower case and have underscores.

### Get
<!-- <+Combo.Get+> -->

### SetFocus
<!-- <+Combo.SetFocus+> -->

### SetTooltip
<!-- <+Combo.SetTooltip+> -->

### Update
<!-- <+Combo.Update+> -->


---------


## Frame Element 
<!-- <+Frame.doc+> -->
<!-- <+Frame.__init__+> -->

### add_row
<!-- <+Frame.add_row+> -->

### bind
<!-- <+Frame.bind+> -->

### block_focus
<!-- <+Frame.block_focus+> -->

### expand
<!-- <+Frame.expand+> -->

### get_next_focus
<!-- <+Frame.get_next_focus+> -->

### get_previous_focus
<!-- <+Frame.get_previous_focus+> -->

### get_size
<!-- <+Frame.get_size+> -->

### grab_anywhere_exclude
<!-- <+Frame.grab_anywhere_exclude+> -->

### grab_anywhere_include
<!-- <+Frame.grab_anywhere_include+> -->

### hide_row
<!-- <+Frame.hide_row+> -->

### layout
<!-- <+Frame.layout+> -->

### key
<!-- <+Frame.key+> -->

### metadata
<!-- <+Frame.metadata+> -->

### set_cursor
<!-- <+Frame.set_cursor+> -->

### set_focus
<!-- <+Frame.set_focus+> -->

### set_size
<!-- <+Frame.set_size+> -->

### set_tooltip
<!-- <+Frame.set_tooltip+> -->

### unbind
<!-- <+Frame.unbind+> -->

### unhide_row
<!-- <+Frame.unhide_row+> -->

### update
<!-- <+Frame.update+> -->

### visible
<!-- <+Frame.visible+> -->

### widget
<!-- <+Frame.widget+> -->


---------

### These are non-PEP8 Compliant Methods - do NOT use

The following methods are here for backwards compatibility reference.  You will find there are PEP8 versions for each of these methods.  The PEP8 versions will be all lower case and have underscores.

### AddRow
<!-- <+Frame.AddRow+> -->

### Layout
<!-- <+Frame.Layout+> -->

### SetFocus
<!-- <+Frame.SetFocus+> -->

### SetTooltip
<!-- <+Frame.SetTooltip+> -->

### Update
<!-- <+Frame.Update+> -->

---------


## Graph Element 
<!-- <+Graph.doc+> -->
<!-- <+Graph.__init__+> -->

### Update
<!-- <+Graph.Update+> -->

### bind
<!-- <+Graph.bind+> -->

### block_focus
<!-- <+Graph.block_focus+> -->

### bring_figure_to_front
<!-- <+Graph.bring_figure_to_front+> -->

### change_coordinates
<!-- <+Graph.change_coordinates+> -->

### delete_figure
<!-- <+Graph.delete_figure+> -->

### draw_arc
<!-- <+Graph.draw_arc+> -->

### draw_circle
<!-- <+Graph.draw_circle+> -->

### draw_image
<!-- <+Graph.draw_image+> -->

### draw_line
<!-- <+Graph.draw_line+> -->

### draw_oval
<!-- <+Graph.draw_oval+> -->

### draw_point
<!-- <+Graph.draw_point+> -->

### draw_polygon
<!-- <+Graph.draw_polygon+> -->

### draw_rectangle
<!-- <+Graph.draw_rectangle+> -->

### draw_text
<!-- <+Graph.draw_text+> -->

### erase
<!-- <+Graph.erase+> -->

### expand
<!-- <+Graph.expand+> -->

### get_bounding_box
<!-- <+Graph.get_bounding_box+> -->

### get_figures_at_location
<!-- <+Graph.get_figures_at_location+> -->

### get_next_focus
<!-- <+Graph.get_next_focus+> -->

### get_previous_focus
<!-- <+Graph.get_previous_focus+> -->

### get_size
<!-- <+Graph.get_size+> -->

### grab_anywhere_exclude
<!-- <+Graph.grab_anywhere_exclude+> -->

### grab_anywhere_include
<!-- <+Graph.grab_anywhere_include+> -->

### hide_row
<!-- <+Graph.hide_row+> -->

### move
<!-- <+Graph.move+> -->

### move_figure
<!-- <+Graph.move_figure+> -->

### relocate_figure
<!-- <+Graph.relocate_figure+> -->

### send_figure_to_back
<!-- <+Graph.send_figure_to_back+> -->

### key
<!-- <+Graph.key+> -->

### metadata
<!-- <+Graph.metadata+> -->

### set_cursor
<!-- <+Graph.set_cursor+> -->

### set_focus
<!-- <+Graph.set_focus+> -->

### set_size
<!-- <+Graph.set_size+> -->

### set_tooltip
<!-- <+Graph.set_tooltip+> -->

### tk_canvas
<!-- <+Graph.tk_canvas+> -->

### unbind
<!-- <+Graph.unbind+> -->

### unhide_row
<!-- <+Graph.unhide_row+> -->

### update
<!-- <+Graph.update+> -->

### visible
<!-- <+Graph.visible+> -->

### widget
<!-- <+Graph.widget+> -->


---------

### These are non-PEP8 Compliant Methods - do NOT use

The following methods are here for backwards compatibility reference.  You will find there are PEP8 versions for each of these methods.  The PEP8 versions will be all lower case and have underscores.

### BringFigureToFront
<!-- <+Graph.BringFigureToFront+> -->

### DeleteFigure
<!-- <+Graph.DeleteFigure+> -->

### DrawArc
<!-- <+Graph.DrawArc+> -->

### DrawCircle
<!-- <+Graph.DrawCircle+> -->

### DrawImage
<!-- <+Graph.DrawImage+> -->

### DrawLine
<!-- <+Graph.DrawLine+> -->

### DrawOval
<!-- <+Graph.DrawOval+> -->

### DrawPoint
<!-- <+Graph.DrawPoint+> -->

### DrawPolygon
<!-- <+Graph.DrawPolygon+> -->

### DrawRectangle
<!-- <+Graph.DrawRectangle+> -->

### DrawText
<!-- <+Graph.DrawText+> -->

### Erase
<!-- <+Graph.Erase+> -->

### GetBoundingBox
<!-- <+Graph.GetBoundingBox+> -->

### GetFiguresAtLocation
<!-- <+Graph.GetFiguresAtLocation+> -->

### Move
<!-- <+Graph.Move+> -->

### MoveFigure
<!-- <+Graph.MoveFigure+> -->

### RelocateFigure
<!-- <+Graph.RelocateFigure+> -->

### SendFigureToBack
<!-- <+Graph.SendFigureToBack+> -->

### SetFocus
<!-- <+Graph.SetFocus+> -->

### SetTooltip
<!-- <+Graph.SetTooltip+> -->

### TKCanvas
<!-- <+Graph.TKCanvas+> -->


---------


## HorizontalSeparator Element 
<!-- <+HorizontalSeparator.doc+> -->
<!-- <+HorizontalSeparator.__init__+> -->

### bind
<!-- <+HorizontalSeparator.bind+> -->

### block_focus
<!-- <+HorizontalSeparator.block_focus+> -->

### expand
<!-- <+HorizontalSeparator.expand+> -->

### get_next_focus
<!-- <+HorizontalSeparator.get_next_focus+> -->

### get_previous_focus
<!-- <+HorizontalSeparator.get_previous_focus+> -->

### get_size
<!-- <+HorizontalSeparator.get_size+> -->

### grab_anywhere_exclude
<!-- <+HorizontalSeparator.grab_anywhere_exclude+> -->

### grab_anywhere_include
<!-- <+HorizontalSeparator.grab_anywhere_include+> -->

### hide_row
<!-- <+HorizontalSeparator.hide_row+> -->

### key
<!-- <+HorizontalSeparator.key+> -->

### metadata
<!-- <+HorizontalSeparator.metadata+> -->

### set_cursor
<!-- <+HorizontalSeparator.set_cursor+> -->

### set_focus
<!-- <+HorizontalSeparator.set_focus+> -->

### set_size
<!-- <+HorizontalSeparator.set_size+> -->

### set_tooltip
<!-- <+HorizontalSeparator.set_tooltip+> -->

### unbind
<!-- <+HorizontalSeparator.unbind+> -->

### unhide_row
<!-- <+HorizontalSeparator.unhide_row+> -->

### visible
<!-- <+HorizontalSeparator.visible+> -->

### widget
<!-- <+HorizontalSeparator.widget+> -->


---------

### These are non-PEP8 Compliant Methods - do NOT use

The following methods are here for backwards compatibility reference.  You will find there are PEP8 versions for each of these methods.  The PEP8 versions will be all lower case and have underscores.


### SetFocus
<!-- <+HorizontalSeparator.SetFocus+> -->

### SetTooltip
<!-- <+HorizontalSeparator.SetTooltip+> -->

---------


## Image Element 
<!-- <+Image.doc+> -->
<!-- <+Image.__init__+> -->

### bind
<!-- <+Image.bind+> -->

### block_focus
<!-- <+Image.block_focus+> -->

### expand
<!-- <+Image.expand+> -->

### get_next_focus
<!-- <+Image.get_next_focus+> -->

### get_previous_focus
<!-- <+Image.get_previous_focus+> -->

### get_size
<!-- <+Image.get_size+> -->

### grab_anywhere_exclude
<!-- <+Image.grab_anywhere_exclude+> -->

### grab_anywhere_include
<!-- <+Image.grab_anywhere_include+> -->

### hide_row
<!-- <+Image.hide_row+> -->

### key
<!-- <+Image.key+> -->

### metadata
<!-- <+Image.metadata+> -->

### set_cursor
<!-- <+Image.set_cursor+> -->

### set_focus
<!-- <+Image.set_focus+> -->

### set_size
<!-- <+Image.set_size+> -->

### set_tooltip
<!-- <+Image.set_tooltip+> -->

### unbind
<!-- <+Image.unbind+> -->

### unhide_row
<!-- <+Image.unhide_row+> -->

### update
<!-- <+Image.update+> -->

### update_animation
<!-- <+Image.update_animation+> -->

### update_animation_no_buffering
<!-- <+Image.update_animation_no_buffering+> -->

### visible
<!-- <+Image.visible+> -->

### widget
<!-- <+Image.widget+> -->


---------

### These are non-PEP8 Compliant Methods - do NOT use

The following methods are here for backwards compatibility reference.  You will find there are PEP8 versions for each of these methods.  The PEP8 versions will be all lower case and have underscores.


### SetFocus
<!-- <+Image.SetFocus+> -->

### SetTooltip
<!-- <+Image.SetTooltip+> -->

### Update
<!-- <+Image.Update+> -->

### UpdateAnimation
<!-- <+Image.UpdateAnimation+> -->

---------


## Input Element 
<!-- <+Input.doc+> -->
<!-- <+Input.__init__+> -->

### bind
<!-- <+Input.bind+> -->

### block_focus
<!-- <+Input.block_focus+> -->

### expand
<!-- <+Input.expand+> -->

### get
<!-- <+Input.get+> -->

### get_next_focus
<!-- <+Input.get_next_focus+> -->

### get_previous_focus
<!-- <+Input.get_previous_focus+> -->

### get_size
<!-- <+Input.get_size+> -->

### grab_anywhere_exclude
<!-- <+Input.grab_anywhere_exclude+> -->

### grab_anywhere_include
<!-- <+Input.grab_anywhere_include+> -->

### hide_row
<!-- <+Input.hide_row+> -->

### key
<!-- <+Input.key+> -->

### metadata
<!-- <+Input.metadata+> -->

### set_cursor
<!-- <+Input.set_cursor+> -->

### set_focus
<!-- <+Input.set_focus+> -->

### set_size
<!-- <+Input.set_size+> -->

### set_tooltip
<!-- <+Input.set_tooltip+> -->

### set_vscroll_position
<!-- <+Input.set_vscroll_position+> -->

### unbind
<!-- <+Input.unbind+> -->

### unhide_row
<!-- <+Input.unhide_row+> -->

### update
<!-- <+Input.update+> -->

### visible
<!-- <+Input.visible+> -->

### widget
<!-- <+Input.widget+> -->


---------

### These are non-PEP8 Compliant Methods - do NOT use

The following methods are here for backwards compatibility reference.  You will find there are PEP8 versions for each of these methods.  The PEP8 versions will be all lower case and have underscores.

### Get
<!-- <+Input.Get+> -->

### SetFocus
<!-- <+Input.SetFocus+> -->

### SetTooltip
<!-- <+Input.SetTooltip+> -->

### Update
<!-- <+Input.Update+> -->


---------


## Listbox Element 
<!-- <+Listbox.doc+> -->
<!-- <+Listbox.__init__+> -->

### bind
<!-- <+Listbox.bind+> -->

### block_focus
<!-- <+Listbox.block_focus+> -->

### expand
<!-- <+Listbox.expand+> -->

### get
<!-- <+Listbox.get+> -->

### get_indexes
<!-- <+Listbox.get_indexes+> -->

### get_list_values
<!-- <+Listbox.get_list_values+> -->

### get_next_focus
<!-- <+Listbox.get_next_focus+> -->

### get_previous_focus
<!-- <+Listbox.get_previous_focus+> -->

### get_size
<!-- <+Listbox.get_size+> -->

### grab_anywhere_exclude
<!-- <+Listbox.grab_anywhere_exclude+> -->

### grab_anywhere_include
<!-- <+Listbox.grab_anywhere_include+> -->

### hide_row
<!-- <+Listbox.hide_row+> -->

### key
<!-- <+Listbox.key+> -->

### metadata
<!-- <+Listbox.metadata+> -->

### set_cursor
<!-- <+Listbox.set_cursor+> -->

### set_focus
<!-- <+Listbox.set_focus+> -->

### set_size
<!-- <+Listbox.set_size+> -->

### set_tooltip
<!-- <+Listbox.set_tooltip+> -->

### set_value
<!-- <+Listbox.set_value+> -->

### set_vscroll_position
<!-- <+Listbox.set_vscroll_position+> -->

### unbind
<!-- <+Listbox.unbind+> -->

### unhide_row
<!-- <+Listbox.unhide_row+> -->

### update
<!-- <+Listbox.update+> -->

### visible
<!-- <+Listbox.visible+> -->

### widget
<!-- <+Listbox.widget+> -->


---------

### These are non-PEP8 Compliant Methods - do NOT use

The following methods are here for backwards compatibility reference.  You will find there are PEP8 versions for each of these methods.  The PEP8 versions will be all lower case and have underscores.

### GetIndexes
<!-- <+Listbox.GetIndexes+> -->

### GetListValues
<!-- <+Listbox.GetListValues+> -->

### SetFocus
<!-- <+Listbox.SetFocus+> -->

### SetTooltip
<!-- <+Listbox.SetTooltip+> -->

### SetValue
<!-- <+Listbox.SetValue+> -->

### Update
<!-- <+Listbox.Update+> -->

---------


## Menu Element 
<!-- <+Menu.doc+> -->
<!-- <+Menu.__init__+> -->

### bind
<!-- <+Menu.bind+> -->

### block_focus
<!-- <+Menu.block_focus+> -->

### expand
<!-- <+Menu.expand+> -->

### get_next_focus
<!-- <+Menu.get_next_focus+> -->

### get_previous_focus
<!-- <+Menu.get_previous_focus+> -->

### get_size
<!-- <+Menu.get_size+> -->

### grab_anywhere_exclude
<!-- <+Menu.grab_anywhere_exclude+> -->

### grab_anywhere_include
<!-- <+Menu.grab_anywhere_include+> -->

### hide_row
<!-- <+Menu.hide_row+> -->

### key
<!-- <+Menu.key+> -->

### metadata
<!-- <+Menu.metadata+> -->

### set_cursor
<!-- <+Menu.set_cursor+> -->

### set_focus
<!-- <+Menu.set_focus+> -->

### set_size
<!-- <+Menu.set_size+> -->

### set_tooltip
<!-- <+Menu.set_tooltip+> -->

### unbind
<!-- <+Menu.unbind+> -->

### unhide_row
<!-- <+Menu.unhide_row+> -->

### update
<!-- <+Menu.update+> -->

### visible
<!-- <+Menu.visible+> -->

### widget
<!-- <+Menu.widget+> -->


---------

### These are non-PEP8 Compliant Methods - do NOT use

The following methods are here for backwards compatibility reference.  You will find there are PEP8 versions for each of these methods.  The PEP8 versions will be all lower case and have underscores.


### SetFocus
<!-- <+Menu.SetFocus+> -->

### SetTooltip
<!-- <+Menu.SetTooltip+> -->

### Update
<!-- <+Menu.Update+> -->

---------


## MenubarCustom Element

Note that while the MenubarCustom is an element, it is implemented using a function.
It is actually a "compound element" that consists of several elements combined into a single Column element.
See the Column element to get a list of method calls available.  The function returns a Column element.

<!-- <+func.MenubarCustom+> -->


---------

## Multiline Element 
<!-- <+Multiline.doc+> -->
<!-- <+Multiline.__init__+> -->

### bind
<!-- <+Multiline.bind+> -->

### block_focus
<!-- <+Multiline.block_focus+> -->

### expand
<!-- <+Multiline.expand+> -->

### get
<!-- <+Multiline.get+> -->

### get_next_focus
<!-- <+Multiline.get_next_focus+> -->

### get_previous_focus
<!-- <+Multiline.get_previous_focus+> -->

### get_size
<!-- <+Multiline.get_size+> -->

### grab_anywhere_exclude
<!-- <+Multiline.grab_anywhere_exclude+> -->

### grab_anywhere_include
<!-- <+Multiline.grab_anywhere_include+> -->

### hide_row
<!-- <+Multiline.hide_row+> -->

### print
<!-- <+Multiline.print+> -->

### reroute_stderr_to_here
<!-- <+Multiline.reroute_stderr_to_here+> -->

### reroute_stdout_to_here
<!-- <+Multiline.reroute_stdout_to_here+> -->

### restore_stderr
<!-- <+Multiline.restore_stderr+> -->

### restore_stdout
<!-- <+Multiline.restore_stdout+> -->

### key
<!-- <+Multiline.key+> -->

### metadata
<!-- <+Multiline.metadata+> -->

### set_cursor
<!-- <+Multiline.set_cursor+> -->

### set_focus
<!-- <+Multiline.set_focus+> -->

### set_size
<!-- <+Multiline.set_size+> -->

### set_tooltip
<!-- <+Multiline.set_tooltip+> -->

### set_vscroll_position
<!-- <+Multiline.set_vscroll_position+> -->

### unbind
<!-- <+Multiline.unbind+> -->

### unhide_row
<!-- <+Multiline.unhide_row+> -->

### update
<!-- <+Multiline.update+> -->

### visible
<!-- <+Multiline.visible+> -->

### widget
<!-- <+Multiline.widget+> -->


---------

### These are non-PEP8 Compliant Methods - do NOT use

The following methods are here for backwards compatibility reference.  You will find there are PEP8 versions for each of these methods.  The PEP8 versions will be all lower case and have underscores.


### Get
<!-- <+Multiline.Get+> -->

### SetFocus
<!-- <+Multiline.SetFocus+> -->

### SetTooltip
<!-- <+Multiline.SetTooltip+> -->

### Update
<!-- <+Multiline.Update+> -->

---------


## OptionMenu Element 
<!-- <+OptionMenu.doc+> -->
<!-- <+OptionMenu.__init__+> -->


### bind
<!-- <+OptionMenu.bind+> -->

### block_focus
<!-- <+OptionMenu.block_focus+> -->

### expand
<!-- <+OptionMenu.expand+> -->

### get_next_focus
<!-- <+OptionMenu.get_next_focus+> -->

### get_previous_focus
<!-- <+OptionMenu.get_previous_focus+> -->

### get_size
<!-- <+OptionMenu.get_size+> -->

### grab_anywhere_exclude
<!-- <+OptionMenu.grab_anywhere_exclude+> -->

### grab_anywhere_include
<!-- <+OptionMenu.grab_anywhere_include+> -->

### hide_row
<!-- <+OptionMenu.hide_row+> -->

### key
<!-- <+OptionMenu.key+> -->

### metadata
<!-- <+OptionMenu.metadata+> -->

### set_cursor
<!-- <+OptionMenu.set_cursor+> -->

### set_focus
<!-- <+OptionMenu.set_focus+> -->

### set_size
<!-- <+OptionMenu.set_size+> -->

### set_tooltip
<!-- <+OptionMenu.set_tooltip+> -->

### set_vscroll_position
<!-- <+OptionMenu.set_vscroll_position+> -->

### unbind
<!-- <+OptionMenu.unbind+> -->

### unhide_row
<!-- <+OptionMenu.unhide_row+> -->

### update
<!-- <+OptionMenu.update+> -->

### visible
<!-- <+OptionMenu.visible+> -->

### widget
<!-- <+OptionMenu.widget+> -->


---------

### These are non-PEP8 Compliant Methods - do NOT use

The following methods are here for backwards compatibility reference.  You will find there are PEP8 versions for each of these methods.  The PEP8 versions will be all lower case and have underscores.



### SetFocus
<!-- <+OptionMenu.SetFocus+> -->

### SetTooltip
<!-- <+OptionMenu.SetTooltip+> -->

### Update
<!-- <+OptionMenu.Update+> -->

---------


## Output Element (No longer recommended - USE `Multiline` instead)

Rather than use the `Output` element, it's recommended that you use the `Multiline` element instead.  The reason for this is that more controls have been added to the Multiline and in the future you can expect more features will be added to the Multiline while the `Output` element has stopped being enhanced.

You can control which Multiline Element receives your stdout output as well as use the color-print (`cprint`) with a Multiline.

<!-- <+Output.doc+> -->
<!-- <+Output.__init__+> -->

### bind
<!-- <+Output.bind+> -->

### block_focus
<!-- <+Output.block_focus+> -->

### expand
<!-- <+Output.expand+> -->

### get_next_focus
<!-- <+Output.get_next_focus+> -->

### get_previous_focus
<!-- <+Output.get_previous_focus+> -->

### get_size
<!-- <+Output.get_size+> -->

### grab_anywhere_exclude
<!-- <+Output.grab_anywhere_exclude+> -->

### grab_anywhere_include
<!-- <+Output.grab_anywhere_include+> -->

### hide_row
<!-- <+Output.hide_row+> -->

### key
<!-- <+Output.key+> -->

### metadata
<!-- <+Output.metadata+> -->

### set_cursor
<!-- <+Output.set_cursor+> -->

### set_focus
<!-- <+Output.set_focus+> -->

### set_size
<!-- <+Output.set_size+> -->

### set_tooltip
<!-- <+Output.set_tooltip+> -->

### tk_out
<!-- <+Output.tk_out+> -->

### set_vscroll_position
<!-- <+Output.set_vscroll_position+> -->

### unbind
<!-- <+Output.unbind+> -->

### unhide_row
<!-- <+Output.unhide_row+> -->

### update
<!-- <+Output.update+> -->

### visible
<!-- <+Output.visible+> -->

### widget
<!-- <+Output.widget+> -->


---------

### These are non-PEP8 Compliant Methods - do NOT use

The following methods are here for backwards compatibility reference.  You will find there are PEP8 versions for each of these methods.  The PEP8 versions will be all lower case and have underscores.


### Get
<!-- <+Output.Get+> -->

### SetFocus
<!-- <+Output.SetFocus+> -->

### SetTooltip
<!-- <+Output.SetTooltip+> -->


### Update
<!-- <+Output.Update+> -->

---------


## Pane Element 
<!-- <+Pane.doc+> -->
<!-- <+Pane.__init__+> -->

### bind
<!-- <+Pane.bind+> -->


### block_focus
<!-- <+Pane.block_focus+> -->

### expand
<!-- <+Pane.expand+> -->

### get_next_focus
<!-- <+Pane.get_next_focus+> -->

### get_previous_focus
<!-- <+Pane.get_previous_focus+> -->

### get_size
<!-- <+Pane.get_size+> -->

### grab_anywhere_exclude
<!-- <+Pane.grab_anywhere_exclude+> -->

### grab_anywhere_include
<!-- <+Pane.grab_anywhere_include+> -->

### hide_row
<!-- <+Pane.hide_row+> -->

### key
<!-- <+Pane.key+> -->

### metadata
<!-- <+Pane.metadata+> -->

### set_cursor
<!-- <+Pane.set_cursor+> -->

### set_focus
<!-- <+Pane.set_focus+> -->

### set_size
<!-- <+Pane.set_size+> -->

### set_tooltip
<!-- <+Pane.set_tooltip+> -->

### unbind
<!-- <+Pane.unbind+> -->

### unhide_row
<!-- <+Pane.unhide_row+> -->

### update
<!-- <+Pane.update+> -->

### visible
<!-- <+Pane.visible+> -->

### widget
<!-- <+Pane.widget+> -->

---------

### These are non-PEP8 Compliant Methods - do NOT use

The following methods are here for backwards compatibility reference.  You will find there are PEP8 versions for each of these methods.  The PEP8 versions will be all lower case and have underscores.


### SetFocus
<!-- <+Pane.SetFocus+> -->

### SetTooltip
<!-- <+Pane.SetTooltip+> -->

### Update
<!-- <+Pane.Update+> -->


---------


## ProgressBar Element 
<!-- <+ProgressBar.doc+> -->
<!-- <+ProgressBar.__init__+> -->


### bind
<!-- <+ProgressBar.bind+> -->

### expand
<!-- <+ProgressBar.expand+> -->

### get_next_focus
<!-- <+ProgressBar.get_next_focus+> -->

### get_previous_focus
<!-- <+ProgressBar.get_previous_focus+> -->

### get_size
<!-- <+ProgressBar.get_size+> -->

### grab_anywhere_exclude
<!-- <+ProgressBar.grab_anywhere_exclude+> -->

### grab_anywhere_include
<!-- <+ProgressBar.grab_anywhere_include+> -->

### hide_row
<!-- <+ProgressBar.hide_row+> -->

### key
<!-- <+ProgressBar.key+> -->

### metadata
<!-- <+ProgressBar.metadata+> -->

### set_cursor
<!-- <+ProgressBar.set_cursor+> -->

### set_focus
<!-- <+ProgressBar.set_focus+> -->

### set_size
<!-- <+ProgressBar.set_size+> -->

### set_tooltip
<!-- <+ProgressBar.set_tooltip+> -->

### unbind
<!-- <+ProgressBar.unbind+> -->

### unhide_row
<!-- <+ProgressBar.unhide_row+> -->

### update
<!-- <+ProgressBar.update+> -->

### update_bar
<!-- <+ProgressBar.update_bar+> -->

### visible
<!-- <+ProgressBar.visible+> -->

### widget
<!-- <+ProgressBar.widget+> -->


---------

### These are non-PEP8 Compliant Methods - do NOT use

The following methods are here for backwards compatibility reference.  You will find there are PEP8 versions for each of these methods.  The PEP8 versions will be all lower case and have underscores.


### SetFocus
<!-- <+ProgressBar.SetFocus+> -->

### SetTooltip
<!-- <+ProgressBar.SetTooltip+> -->

### Update
<!-- <+ProgressBar.Update+> -->

### UpdateBar
<!-- <+ProgressBar.UpdateBar+> -->



------------------

## Push Element (alias include `P` and `Stretch`)

Not a true element, but a function acting like an element.

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 time-frame, 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.



A `Push` element will "push" elements on the row away from it.  If you have 1 `Push` as the start of a row, then the row will be right-justified.  If you have two `Push` elements, one as the first element and one as the last element on a row, then the row will be centered.

<!-- <+func.Push+> -->

---------



## Radio Element 
<!-- <+Radio.doc+> -->
<!-- <+Radio.__init__+> -->


### bind
<!-- <+Radio.bind+> -->

### block_focus
<!-- <+Radio.block_focus+> -->

### expand
<!-- <+Radio.expand+> -->

### get
<!-- <+Radio.get+> -->

### get_next_focus
<!-- <+Radio.get_next_focus+> -->

### get_previous_focus
<!-- <+Radio.get_previous_focus+> -->

### get_size
<!-- <+Radio.get_size+> -->

### grab_anywhere_exclude
<!-- <+Radio.grab_anywhere_exclude+> -->

### grab_anywhere_include
<!-- <+Radio.grab_anywhere_include+> -->

### hide_row
<!-- <+Radio.hide_row+> -->

### reset_group
<!-- <+Radio.reset_group+> -->

### key
<!-- <+Radio.key+> -->

### metadata
<!-- <+Radio.metadata+> -->

### set_cursor
<!-- <+Radio.set_cursor+> -->

### set_focus
<!-- <+Radio.set_focus+> -->

### set_size
<!-- <+Radio.set_size+> -->

### set_tooltip
<!-- <+Radio.set_tooltip+> -->

### unbind
<!-- <+Radio.unbind+> -->

### unhide_row
<!-- <+Radio.unhide_row+> -->

### update
<!-- <+Radio.update+> -->

### visible
<!-- <+Radio.visible+> -->

### widget
<!-- <+Radio.widget+> -->


---------

### These are non-PEP8 Compliant Methods - do NOT use

The following methods are here for backwards compatibility reference.  You will find there are PEP8 versions for each of these methods.  The PEP8 versions will be all lower case and have underscores.


### Get
<!-- <+Radio.Get+> -->

### ResetGroup
<!-- <+Radio.ResetGroup+> -->

### SetFocus
<!-- <+Radio.SetFocus+> -->

### SetTooltip
<!-- <+Radio.SetTooltip+> -->

### Update
<!-- <+Radio.Update+> -->


---------

## Sizer Element

Note that while the Sizer is an element, it is implemented using a function and doesn't have the normal set of element methods.

This element is used to add more space.... more size...to a Container Element or a Window.  They are often better to use than hard-coded sizes on the containers typically.

<!-- <+func.Sizer+> -->

-------

## Sizegrip Element 
<!-- <+Sizegrip.doc+> -->
<!-- <+Sizegrip.__init__+> -->

### bind
<!-- <+Sizegrip.bind+> -->

### expand
<!-- <+Sizegrip.expand+> -->

### get_next_focus
<!-- <+Sizegrip.get_next_focus+> -->

### get_previous_focus
<!-- <+Sizegrip.get_previous_focus+> -->

### get_size
<!-- <+Sizegrip.get_size+> -->

### grab_anywhere_exclude
<!-- <+Sizegrip.grab_anywhere_exclude+> -->

### grab_anywhere_include
<!-- <+Sizegrip.grab_anywhere_include+> -->

### hide_row
<!-- <+Sizegrip.hide_row+> -->

### key
<!-- <+Sizegrip.key+> -->

### metadata
<!-- <+Sizegrip.metadata+> -->

### set_cursor
<!-- <+Sizegrip.set_cursor+> -->

### set_focus
<!-- <+Sizegrip.set_focus+> -->

### set_size
<!-- <+Sizegrip.set_size+> -->

### set_tooltip
<!-- <+Sizegrip.set_tooltip+> -->

### set_vscroll_position
<!-- <+Sizegrip.set_vscroll_position+> -->

### unbind
<!-- <+Sizegrip.unbind+> -->

### unhide_row
<!-- <+Sizegrip.unhide_row+> -->

### update
<!-- <+Sizegrip.update+> -->

### visible
<!-- <+Sizegrip.visible+> -->

### widget
<!-- <+Sizegrip.widget+> -->


---------


## Slider Element 
<!-- <+Slider.doc+> -->
<!-- <+Slider.__init__+> -->

### bind
<!-- <+Slider.bind+> -->

### block_focus
<!-- <+Slider.block_focus+> -->

### expand
<!-- <+Slider.expand+> -->

### get_next_focus
<!-- <+Slider.get_next_focus+> -->

### get_previous_focus
<!-- <+Slider.get_previous_focus+> -->

### get_size
<!-- <+Slider.get_size+> -->

### grab_anywhere_exclude
<!-- <+Slider.grab_anywhere_exclude+> -->

### grab_anywhere_include
<!-- <+Slider.grab_anywhere_include+> -->

### hide_row
<!-- <+Slider.hide_row+> -->

### key
<!-- <+Slider.key+> -->

### metadata
<!-- <+Slider.metadata+> -->

### set_cursor
<!-- <+Slider.set_cursor+> -->

### set_focus
<!-- <+Slider.set_focus+> -->

### set_size
<!-- <+Slider.set_size+> -->

### set_tooltip
<!-- <+Slider.set_tooltip+> -->

### unbind
<!-- <+Slider.unbind+> -->

### unhide_row
<!-- <+Slider.unhide_row+> -->

### update
<!-- <+Slider.update+> -->

### visible
<!-- <+Slider.visible+> -->

### widget
<!-- <+Slider.widget+> -->


---------

### These are non-PEP8 Compliant Methods - do NOT use

The following methods are here for backwards compatibility reference.  You will find there are PEP8 versions for each of these methods.  The PEP8 versions will be all lower case and have underscores.

### SetFocus
<!-- <+Slider.SetFocus+> -->

### SetTooltip
<!-- <+Slider.SetTooltip+> -->

### Update
<!-- <+Slider.Update+> -->

---------


## Spin Element 
<!-- <+Spin.doc+> -->
<!-- <+Spin.__init__+> -->


### bind
<!-- <+Spin.bind+> -->

### block_focus
<!-- <+Spin.block_focus+> -->

### expand
<!-- <+Spin.expand+> -->

### get
<!-- <+Spin.get+> -->

### get_next_focus
<!-- <+Spin.get_next_focus+> -->

### get_previous_focus
<!-- <+Spin.get_previous_focus+> -->

### get_size
<!-- <+Spin.get_size+> -->

### grab_anywhere_exclude
<!-- <+Spin.grab_anywhere_exclude+> -->

### grab_anywhere_include
<!-- <+Spin.grab_anywhere_include+> -->

### hide_row
<!-- <+Spin.hide_row+> -->

### key
<!-- <+Spin.key+> -->

### metadata
<!-- <+Spin.metadata+> -->

### set_cursor
<!-- <+Spin.set_cursor+> -->

### set_focus
<!-- <+Spin.set_focus+> -->

### set_size
<!-- <+Spin.set_size+> -->

### set_tooltip
<!-- <+Spin.set_tooltip+> -->

### unbind
<!-- <+Spin.unbind+> -->

### unhide_row
<!-- <+Spin.unhide_row+> -->

### update
<!-- <+Spin.update+> -->

### visible
<!-- <+Spin.visible+> -->

### widget
<!-- <+Spin.widget+> -->

---------

### These are non-PEP8 Compliant Methods - do NOT use

The following methods are here for backwards compatibility reference.  You will find there are PEP8 versions for each of these methods.  The PEP8 versions will be all lower case and have underscores.

### Get
<!-- <+Spin.Get+> -->

### SetFocus
<!-- <+Spin.SetFocus+> -->

### SetTooltip
<!-- <+Spin.SetTooltip+> -->

### Update
<!-- <+Spin.Update+> -->

---------


## StatusBar Element 
<!-- <+StatusBar.doc+> -->
<!-- <+StatusBar.__init__+> -->


### bind
<!-- <+StatusBar.bind+> -->

### block_focus
<!-- <+StatusBar.block_focus+> -->

### expand
<!-- <+StatusBar.expand+> -->

### get_next_focus
<!-- <+StatusBar.get_next_focus+> -->

### get_previous_focus
<!-- <+StatusBar.get_previous_focus+> -->

### get_size
<!-- <+StatusBar.get_size+> -->

### grab_anywhere_exclude
<!-- <+StatusBar.grab_anywhere_exclude+> -->

### grab_anywhere_include
<!-- <+StatusBar.grab_anywhere_include+> -->

### hide_row
<!-- <+StatusBar.hide_row+> -->

### key
<!-- <+StatusBar.key+> -->

### metadata
<!-- <+StatusBar.metadata+> -->

### set_cursor
<!-- <+StatusBar.set_cursor+> -->

### set_focus
<!-- <+StatusBar.set_focus+> -->

### set_size
<!-- <+StatusBar.set_size+> -->

### set_tooltip
<!-- <+StatusBar.set_tooltip+> -->

### unbind
<!-- <+StatusBar.unbind+> -->

### unhide_row
<!-- <+StatusBar.unhide_row+> -->

### update
<!-- <+StatusBar.update+> -->

### visible
<!-- <+StatusBar.visible+> -->

### widget
<!-- <+StatusBar.widget+> -->


---------

### These are non-PEP8 Compliant Methods - do NOT use

The following methods are here for backwards compatibility reference.  You will find there are PEP8 versions for each of these methods.  The PEP8 versions will be all lower case and have underscores.

### SetFocus
<!-- <+StatusBar.SetFocus+> -->

### SetTooltip
<!-- <+StatusBar.SetTooltip+> -->

### Update
<!-- <+StatusBar.Update+> -->

---------

## Tab Element 
<!-- <+Tab.doc+> -->
<!-- <+Tab.__init__+> -->


### add_row
<!-- <+Tab.add_row+> -->

### bind
<!-- <+Tab.bind+> -->

### block_focus
<!-- <+Tab.block_focus+> -->

### expand
<!-- <+Tab.expand+> -->

### get_next_focus
<!-- <+Tab.get_next_focus+> -->

### get_previous_focus
<!-- <+Tab.get_previous_focus+> -->

### get_size
<!-- <+Tab.get_size+> -->

### grab_anywhere_exclude
<!-- <+Tab.grab_anywhere_exclude+> -->

### grab_anywhere_include
<!-- <+Tab.grab_anywhere_include+> -->

### hide_row
<!-- <+Tab.hide_row+> -->

### layout
<!-- <+Tab.layout+> -->

### select
<!-- <+Tab.select+> -->

### key
<!-- <+Tab.key+> -->

### metadata
<!-- <+Tab.metadata+> -->

### set_cursor
<!-- <+Tab.set_cursor+> -->

### set_focus
<!-- <+Tab.set_focus+> -->

### set_size
<!-- <+Tab.set_size+> -->

### set_tooltip
<!-- <+Tab.set_tooltip+> -->

### unbind
<!-- <+Tab.unbind+> -->

### unhide_row
<!-- <+Tab.unhide_row+> -->

### update
<!-- <+Tab.update+> -->

### visible
<!-- <+Tab.visible+> -->

### widget
<!-- <+Tab.widget+> -->


---------

### These are non-PEP8 Compliant Methods - do NOT use

The following methods are here for backwards compatibility reference.  You will find there are PEP8 versions for each of these methods.  The PEP8 versions will be all lower case and have underscores.


### AddRow
<!-- <+Tab.AddRow+> -->

### Layout
<!-- <+Tab.Layout+> -->

### Select
<!-- <+Tab.Select+> -->

### SetFocus
<!-- <+Tab.SetFocus+> -->

### SetTooltip
<!-- <+Tab.SetTooltip+> -->

### Update
<!-- <+Tab.Update+> -->


---------


## TabGroup Element 
<!-- <+TabGroup.doc+> -->
<!-- <+TabGroup.__init__+> -->

### add_tab
<!-- <+TabGroup.add_tab+> -->

### bind
<!-- <+TabGroup.bind+> -->

### block_focus
<!-- <+TabGroup.block_focus+> -->

### expand
<!-- <+TabGroup.expand+> -->

### find_key_from_tab_name
<!-- <+TabGroup.find_key_from_tab_name+> -->

### get
<!-- <+TabGroup.get+> -->

### get_next_focus
<!-- <+TabGroup.get_next_focus+> -->

### get_previous_focus
<!-- <+TabGroup.get_previous_focus+> -->

### get_size
<!-- <+TabGroup.get_size+> -->

### grab_anywhere_exclude
<!-- <+TabGroup.grab_anywhere_exclude+> -->

### grab_anywhere_include
<!-- <+TabGroup.grab_anywhere_include+> -->

### hide_row
<!-- <+TabGroup.hide_row+> -->

### key
<!-- <+TabGroup.key+> -->

### metadata
<!-- <+TabGroup.metadata+> -->

### set_cursor
<!-- <+TabGroup.set_cursor+> -->

### set_focus
<!-- <+TabGroup.set_focus+> -->

### set_size
<!-- <+TabGroup.set_size+> -->

### set_tooltip
<!-- <+TabGroup.set_tooltip+> -->

### set_vscroll_position
<!-- <+Table.set_vscroll_position+> -->

### unbind
<!-- <+TabGroup.unbind+> -->

### unhide_row
<!-- <+TabGroup.unhide_row+> -->

### visible
<!-- <+TabGroup.visible+> -->

### widget
<!-- <+TabGroup.widget+> -->


---------

### These are non-PEP8 Compliant Methods - do NOT use

The following methods are here for backwards compatibility reference.  You will find there are PEP8 versions for each of these methods.  The PEP8 versions will be all lower case and have underscores.

### FindKeyFromTabName
<!-- <+TabGroup.FindKeyFromTabName+> -->

### Get
<!-- <+TabGroup.Get+> -->

### SetFocus
<!-- <+TabGroup.SetFocus+> -->

### SetTooltip
<!-- <+TabGroup.SetTooltip+> -->


---------


## Table Element 
<!-- <+Table.doc+> -->
<!-- <+Table.__init__+> -->


### bind
<!-- <+Table.bind+> -->

### block_focus
<!-- <+Table.block_focus+> -->

### expand
<!-- <+Table.expand+> -->

### get
<!-- <+Table.get+> -->

### get_next_focus
<!-- <+Table.get_next_focus+> -->

### get_previous_focus
<!-- <+Table.get_previous_focus+> -->

### get_size
<!-- <+Table.get_size+> -->

### grab_anywhere_exclude
<!-- <+Table.grab_anywhere_exclude+> -->

### grab_anywhere_include
<!-- <+Table.grab_anywhere_include+> -->

### hide_row
<!-- <+Table.hide_row+> -->

### key
<!-- <+Table.key+> -->

### metadata
<!-- <+Table.metadata+> -->

### set_cursor
<!-- <+Table.set_cursor+> -->

### set_focus
<!-- <+Table.set_focus+> -->

### set_size
<!-- <+Table.set_size+> -->

### set_tooltip
<!-- <+Table.set_tooltip+> -->

### unbind
<!-- <+Table.unbind+> -->

### unhide_row
<!-- <+Table.unhide_row+> -->

### update
<!-- <+Table.update+> -->

### visible
<!-- <+Table.visible+> -->

### widget
<!-- <+Table.widget+> -->


---------

### These are non-PEP8 Compliant Methods - do NOT use

The following methods are here for backwards compatibility reference.  You will find there are PEP8 versions for each of these methods.  The PEP8 versions will be all lower case and have underscores.

### Get
<!-- <+Table.Get+> -->

### SetFocus
<!-- <+Table.SetFocus+> -->

### SetTooltip
<!-- <+Table.SetTooltip+> -->

### Update
<!-- <+Table.Update+> -->

---------


## Text Element 
<!-- <+Text.doc+> -->
<!-- <+Text.__init__+> -->

### bind
<!-- <+Text.bind+> -->

### expand
<!-- <+Text.expand+> -->

### fonts_installed_list
<!-- <+Text.fonts_installed_list+> -->

### get
<!-- <+Text.get+> -->

### get_next_focus
<!-- <+Text.get_next_focus+> -->

### get_previous_focus
<!-- <+Text.get_previous_focus+> -->

### get_size
<!-- <+Text.get_size+> -->

### grab_anywhere_exclude
<!-- <+Text.grab_anywhere_exclude+> -->

### grab_anywhere_include
<!-- <+Text.grab_anywhere_include+> -->

### hide_row
<!-- <+Text.hide_row+> -->

### key
<!-- <+Text.key+> -->

### metadata
<!-- <+Text.metadata+> -->

### set_cursor
<!-- <+Text.set_cursor+> -->

### set_focus
<!-- <+Text.set_focus+> -->

### set_size
<!-- <+Text.set_size+> -->

### set_tooltip
<!-- <+Text.set_tooltip+> -->

### unbind
<!-- <+Text.unbind+> -->

### unhide_row
<!-- <+Text.unhide_row+> -->

### update
<!-- <+Text.update+> -->

### visible
<!-- <+Text.visible+> -->

### widget
<!-- <+Text.widget+> -->


---------

### These are non-PEP8 Compliant Methods - do NOT use

The following methods are here for backwards compatibility reference.  You will find there are PEP8 versions for each of these methods.  The PEP8 versions will be all lower case and have underscores.

#### Get
<!-- <+Text.Get+> -->

### SetFocus
<!-- <+Text.SetFocus+> -->

### SetTooltip
<!-- <+Text.SetTooltip+> -->

### Update
<!-- <+Text.Update+> -->


---------


## Titlebar Element

Note that while the Titlebar is an element, it is implemented using a function.

It is actually a "compound element" that consists of several elements combined into a single Column element.
See the Column element to get a list of method calls available.  The function returns a Column element.  This type of construct is referred to as "User Defined Elements" in the documentation and tutorials.

<!-- <+func.Titlebar+> -->

---------

## Tree Element 
<!-- <+Tree.doc+> -->
<!-- <+Tree.__init__+> -->

### add_treeview_data
<!-- <+Tree.add_treeview_data+> -->

### bind
<!-- <+Tree.bind+> -->

### block_focus
<!-- <+Tree.block_focus+> -->

### expand
<!-- <+Tree.expand+> -->

### get_next_focus
<!-- <+Tree.get_next_focus+> -->

### get_previous_focus
<!-- <+Tree.get_previous_focus+> -->

### get_size
<!-- <+Tree.get_size+> -->

### grab_anywhere_exclude
<!-- <+Tree.grab_anywhere_exclude+> -->

### grab_anywhere_include
<!-- <+Tree.grab_anywhere_include+> -->

### hide_row
<!-- <+Tree.hide_row+> -->

### key
<!-- <+Tree.key+> -->

### metadata
<!-- <+Tree.metadata+> -->

### set_cursor
<!-- <+Tree.set_cursor+> -->

### set_focus
<!-- <+Tree.set_focus+> -->

### set_size
<!-- <+Tree.set_size+> -->

### set_tooltip
<!-- <+Tree.set_tooltip+> -->

### set_vscroll_position
<!-- <+Tree.set_vscroll_position+> -->

### unbind
<!-- <+Tree.unbind+> -->

### unhide_row
<!-- <+Tree.unhide_row+> -->

### update
<!-- <+Tree.update+> -->

### visible
<!-- <+Tree.visible+> -->

### widget
<!-- <+Tree.widget+> -->


---------

### These are non-PEP8 Compliant Methods - do NOT use

The following methods are here for backwards compatibility reference.  You will find there are PEP8 versions for each of these methods.  The PEP8 versions will be all lower case and have underscores.

### SetFocus
<!-- <+Tree.SetFocus+> -->

### SetTooltip
<!-- <+Tree.SetTooltip+> -->

### Update
<!-- <+Tree.Update+> -->


---------



## TreeData (for Tree Element) 
<!-- <+TreeData.doc+> -->
<!-- <+TreeData.__init__+> -->

### Node
<!-- <+TreeData.Node+> -->

### insert
<!-- <+TreeData.insert+> -->

### Insert
<!-- <+TreeData.Insert+> -->

---------



## VerticalSeparator Element 
<!-- <+VerticalSeparator.doc+> -->
<!-- <+VerticalSeparator.__init__+> -->

### bind
<!-- <+VerticalSeparator.bind+> -->

### expand
<!-- <+VerticalSeparator.expand+> -->

### get_next_focus
<!-- <+VerticalSeparator.get_next_focus+> -->

### get_previous_focus
<!-- <+VerticalSeparator.get_previous_focus+> -->

### get_size
<!-- <+VerticalSeparator.get_size+> -->

### grab_anywhere_exclude
<!-- <+VerticalSeparator.grab_anywhere_exclude+> -->

### grab_anywhere_include
<!-- <+VerticalSeparator.grab_anywhere_include+> -->

### hide_row
<!-- <+VerticalSeparator.hide_row+> -->

### key
<!-- <+VerticalSeparator.key+> -->

### metadata
<!-- <+VerticalSeparator.metadata+> -->

### set_cursor
<!-- <+VerticalSeparator.set_cursor+> -->

### set_focus
<!-- <+VerticalSeparator.set_focus+> -->

### set_size
<!-- <+VerticalSeparator.set_size+> -->

### set_tooltip
<!-- <+VerticalSeparator.set_tooltip+> -->

### unbind
<!-- <+VerticalSeparator.unbind+> -->

### unhide_row
<!-- <+VerticalSeparator.unhide_row+> -->

### visible
<!-- <+VerticalSeparator.visible+> -->

### widget
<!-- <+VerticalSeparator.widget+> -->

------------------------------

## VPush Element (aliases include `VP` and `VStretch`)

Like the `Push` element, this is not a true element but rather a function acting like an element.  It will "Push" all elements above and below away from it.

Example:  If first row has a `VPush`, then your layout will be At the bottom of the container it is in.  If one is on the last row, then the layout will be at the top of the container.  If you use TWO `VPush`, one on the first row and one on the last row, then your layout will be centered vertically.


<!-- <+func.VPush+> -->


-----------------------------------



## Window - The `Window` Object
<!-- <+Window.doc+> -->
<!-- <+Window.__init__+> -->


### add_row
<!-- <+Window.add_row+> -->

### add_rows
<!-- <+Window.add_rows+> -->

### alpha_channel
<!-- <+Window.alpha_channel+> -->

### bind
<!-- <+Window.bind+> -->

### bring_to_front
<!-- <+Window.bring_to_front+> -->

### close
<!-- <+Window.close+> -->

### current_location
<!-- <+Window.current_location+> -->

### ding
<!-- <+Window.ding+> -->

### disable
<!-- <+Window.disable+> -->

### disable_debugger
<!-- <+Window.disable_debugger+> -->

### disappear
<!-- <+Window.disappear+> -->

### elem
<!-- <+Window.elem+> -->

### element
<!-- <+Window.element+> -->

### element_list
<!-- <+Window.element_list+> -->

### enable
<!-- <+Window.enable+> -->

### enable_debugger
<!-- <+Window.enable_debugger+> -->

### extend_layout
<!-- <+Window.extend_layout+> -->

### fill
<!-- <+Window.fill+> -->

### finalize
<!-- <+Window.finalize+> -->

### find
<!-- <+Window.find+> -->

### find_element
<!-- <+Window.find_element+> -->

### find_element_with_focus
<!-- <+Window.find_element_with_focus+> -->

### force_focus
<!-- <+Window.force_focus+> -->


### get_screen_dimensions
<!-- <+Window.get_screen_dimensions+> -->

### get_screen_size
<!-- <+Window.get_screen_size+> -->

### grab_any_where_off
<!-- <+Window.grab_any_where_off+> -->

### grab_any_where_on
<!-- <+Window.grab_any_where_on+> -->

### hide
<!-- <+Window.hide+> -->

### keep_on_top_clear
<!-- <+Window.keep_on_top_clear+> -->

### keep_on_top_set
<!-- <+Window.keep_on_top_set+> -->

### key_dict
<!-- <+Window.key_dict+> -->

### layout
<!-- <+Window.layout+> -->

### load_from_disk
<!-- <+Window.load_from_disk+> -->

### make_modal
<!-- <+Window.make_modal+> -->

### maximize
<!-- <+Window.maximize+> -->

### key
<!-- <+Button.key+> -->

### metadata
<!-- <+Window.metadata+> -->

### minimize
<!-- <+Window.minimize+> -->

### mouse_location
<!-- <+Window.mouse_location+> -->

### move
<!-- <+Window.move+> -->

### move_to_center
<!-- <+Window.move_to_center+> -->

### normal
<!-- <+Window.normal+> -->

### perform_long_operation
<!-- <+Window.perform_long_operation+> -->

### read
<!-- <+Window.read+> -->

### reappear
<!-- <+Window.reappear+> -->

### refresh
<!-- <+Window.refresh+> -->

### save_to_disk
<!-- <+Window.save_to_disk+> -->

### save_window_screenshot_to_disk
<!-- <+Window.save_window_screenshot_to_disk+> -->

### send_to_back
<!-- <+Window.send_to_back+> -->

### set_alpha
<!-- <+Window.set_alpha+> -->

### set_cursor
<!-- <+Window.set_cursor+> -->

### set_icon
<!-- <+Window.set_icon+> -->

### set_min_size
<!-- <+Window.set_min_size+> -->

### set_size
<!-- <+Window.set_size+> -->

### set_title
<!-- <+Window.set_title+> -->

### set_transparent_color
<!-- <+Window.set_transparent_color+> -->

### size
<!-- <+Window.size+> -->

### start_thread
<!-- <+Window.start_thread+> -->

### un_hide
<!-- <+Window.un_hide+> -->

### visibility_changed
<!-- <+Window.visibility_changed+> -->

### was_closed
<!-- <+Window.was_closed+> -->

### widget_to_element
<!-- <+Window.widget_to_element+> -->

### write_event_value
<!-- <+Window.write_event_value+> -->


---------

### These are non-PEP8 Compliant Methods - do NOT use

***Do not use these***... they are here for your reference should you see them in old code.

The following methods are here for backwards compatibility reference.  You will find there are PEP8 versions for each of these methods.  The PEP8 versions will be all lower case and have underscores.


### AddRow
<!-- <+Window.AddRow+> -->

### AddRows
<!-- <+Window.AddRows+> -->

### AlphaChannel
<!-- <+Window.AlphaChannel+> -->

### BringToFront
<!-- <+Window.BringToFront+> -->

### Close
<!-- <+Window.Close+> -->

### CurrentLocation
<!-- <+Window.CurrentLocation+> -->

### Disable
<!-- <+Window.Disable+> -->

### DisableDebugger
<!-- <+Window.DisableDebugger+> -->

### Disappear
<!-- <+Window.Disappear+> -->

### Elem
<!-- <+Window.Elem+> -->

### Element
<!-- <+Window.Element+> -->

### Enable
<!-- <+Window.Enable+> -->

### EnableDebugger
<!-- <+Window.EnableDebugger+> -->

### Fill
<!-- <+Window.Fill+> -->

### Finalize
<!-- <+Window.Finalize+> -->

### Find
<!-- <+Window.Find+> -->

### FindElement
<!-- <+Window.FindElement+> -->

### FindElementWithFocus
<!-- <+Window.FindElementWithFocus+> -->

### GetScreenDimensions
<!-- <+Window.GetScreenDimensions+> -->

### GrabAnyWhereOff
<!-- <+Window.GrabAnyWhereOff+> -->

### GrabAnyWhereOn
<!-- <+Window.GrabAnyWhereOn+> -->

### Hide
<!-- <+Window.Hide+> -->

### Layout
<!-- <+Window.Layout+> -->

### LoadFromDisk
<!-- <+Window.LoadFromDisk+> -->

### Maximize
<!-- <+Window.Maximize+> -->

### Minimize
<!-- <+Window.Minimize+> -->

### Move
<!-- <+Window.Move+> -->

### Normal
<!-- <+Window.Normal+> -->

### Read
<!-- <+Window.Read+> -->

### Reappear
<!-- <+Window.Reappear+> -->

### Refresh
<!-- <+Window.Refresh+> -->

### SaveToDisk
<!-- <+Window.SaveToDisk+> -->

### SendToBack
<!-- <+Window.SendToBack+> -->

### SetAlpha
<!-- <+Window.SetAlpha+> -->

### SetIcon
<!-- <+Window.SetIcon+> -->

### SetTransparentColor
<!-- <+Window.SetTransparentColor+> -->

### Size
<!-- <+Window.Size+> -->

### UnHide
<!-- <+Window.UnHide+> -->

### VisibilityChanged
<!-- <+Window.VisibilityChanged+> -->


---------

## Layout Helper Funcs

<!-- <+func.pin+> -->
<!-- <+func.vbottom+> -->
<!-- <+func.vcenter+> -->
<!-- <+func.vtop+> -->

-----------------


## SystemTray  - Only for Qt and Wx ports. Use `psgtray` package for the tkinter port
<!-- <+SystemTray.doc+> -->
<!-- <+SystemTray.__init__+> -->

### close
<!-- <+SystemTray.close+> -->

### hide
<!-- <+SystemTray.hide+> -->


### metadata
<!-- <+SystemTray.metadata+> -->

### notify
<!-- <+SystemTray.notify+> -->

### read
<!-- <+SystemTray.read+> -->

### show_message
<!-- <+SystemTray.show_message+> -->

### un_hide
<!-- <+SystemTray.un_hide+> -->

### update
<!-- <+SystemTray.update+> -->


---------

### These are non-PEP8 Compliant Methods - do NOT use

The following methods are here for backwards compatibility reference.  You will find there are PEP8 versions for each of these methods.  The PEP8 versions will be all lower case and have underscores.


### Close
<!-- <+SystemTray.Close+> -->

### Hide
<!-- <+SystemTray.Hide+> -->

### Read
<!-- <+SystemTray.Read+> -->

### ShowMessage
<!-- <+SystemTray.ShowMessage+> -->

### UnHide
<!-- <+SystemTray.UnHide+> -->

### Update
<!-- <+SystemTray.Update+> -->


-----------

## Version Info

<!-- <+func.get_versions+> -->


## Multi-window Interface

<!-- <+func.read_all_windows+> -->


## Pre-Defined Buttons (use in your layout)

<!-- <+func.CalendarButton+> -->
<!-- <+func.Cancel+> -->
<!-- <+func.ColorChooserButton+> -->
<!-- <+func.Debug+> -->
<!-- <+func.DummyButton+> -->
<!-- <+func.Exit+> -->
<!-- <+func.FileBrowse+> -->
<!-- <+func.FileSaveAs+> -->
<!-- <+func.FilesBrowse+> -->
<!-- <+func.FolderBrowse+> -->
<!-- <+func.Help+> -->
<!-- <+func.No+> -->
<!-- <+func.OK+> -->
<!-- <+func.Ok+> -->
<!-- <+func.Open+> -->
<!-- <+func.Quit+> -->
<!-- <+func.RealtimeButton+> -->
<!-- <+func.Save+> -->
<!-- <+func.SaveAs+> -->
<!-- <+func.Submit+> -->
<!-- <+func.Yes+> -->

## Button Functions No Longer Used (DO NOT USE)

Note - These are no longer recommended! 
They are shown here in case you run into them in some old code.

<!-- <+func.RButton+> -->
<!-- <+func.ReadButton+> -->
<!-- <+func.CButton+> -->
<!-- <+func.CloseButton+> -->

-----------

## Debug Window Output

<!-- <+func.easy_print+> -->
<!-- <+func.easy_print_close+> -->
<!-- <+func.eprint+> -->
<!-- <+func.sgprint+> -->
<!-- <+func.sgprint_close+> -->
<!-- <+func.EasyPrint+> -->
<!-- <+func.EasyPrintClose+> -->
<!-- <+func.Print+> -->
<!-- <+func.PrintClose+> -->


## Color Printing to Multiline Element of a Window

<!-- <+func.cprint+> -->
<!-- <+func.cprint_set_output_destination+> -->

-----------


## One Line Progress Meter

Add a progress meter to your application by adding 1 line of code.

<!-- <+func.one_line_progress_meter+> -->
<!-- <+func.one_line_progress_meter_cancel+> -->

### NON-PEP8 Versions

Don't use these.  They are here in case you're searching for them.  Instead use the PEP8 version `one_line_progress_meter`.

<!-- <+func.OneLineProgressMeter+> -->
<!-- <+func.OneLineProgressMeterCancel+> -->

## Popups PEP8 Versions

<!-- <+func.popup+> -->
<!-- <+func.popup_animated+> -->
<!-- <+func.popup_auto_close+> -->
<!-- <+func.popup_cancel+> -->
<!-- <+func.popup_error+> -->
<!-- <+func.popup_get_date+> -->
<!-- <+func.popup_get_file+> -->
<!-- <+func.popup_get_folder+> -->
<!-- <+func.popup_get_text+> -->
<!-- <+func.popup_menu+> -->
<!-- <+func.popup_no_buttons+> -->
<!-- <+func.popup_no_titlebar+> -->
<!-- <+func.popup_non_blocking+> -->
<!-- <+func.popup_notify+> -->
<!-- <+func.popup_ok+> -->
<!-- <+func.popup_ok_cancel+> -->
<!-- <+func.popup_quick+> -->
<!-- <+func.popup_quick_message+> -->
<!-- <+func.popup_scrolled+> -->
<!-- <+func.popup_yes_no+> -->


### `sprint` Popup Alias - Same as popup_scrolled

<!-- <+func.sprint+> -->
<!-- <+func.ScrolledTextBox+> -->


## Popup Not PEP8 Compliant names

*** You should not use these function names! *** 

These versions of the popup functions are here only for backwards compatibility. Instead use the popup functions that have snake_case rather than CamelCase.

<!-- <+func.Popup+> -->
<!-- <+func.PopupAnimated+> -->
<!-- <+func.PopupAnnoying+> -->
<!-- <+func.PopupAutoClose+> -->
<!-- <+func.PopupCancel+> -->
<!-- <+func.PopupError+> -->
<!-- <+func.PopupGetFile+> -->
<!-- <+func.PopupGetFolder+> -->
<!-- <+func.PopupGetText+> -->
<!-- <+func.PopupNoBorder+> -->
<!-- <+func.PopupNoButtons+> -->
<!-- <+func.PopupNoFrame+> -->
<!-- <+func.PopupNoTitlebar+> -->
<!-- <+func.PopupNonBlocking+> -->
<!-- <+func.PopupOK+> -->
<!-- <+func.PopupOKCancel+> -->
<!-- <+func.PopupQuick+> -->
<!-- <+func.PopupQuickMessage+> -->
<!-- <+func.PopupScrolled+> -->
<!-- <+func.PopupTimed+> -->
<!-- <+func.PopupYesNo+> -->




## Display Objects as Strings

These functions will return an object as a string that shows each of the object's member variables.  They're nice to use if you want to print any Python object, not just PySimpleGUI ones.

<!-- <+func.obj_to_string+> -->
<!-- <+func.obj_to_string_single_obj+> -->


## The Main PySimpleGUI Program - Test Harness, Global Settings, Debug Information, Upgrade from GitHub

A convention that PySimpleGUI uses is that standalone entry points start with "main_".  These calls are essentially a mini-program within the PySimpleGUI.py file.

Used to get SDK help, test the installation, get information about the versions, upgrade from GitHub.

You can call main() from your code and then access these other features such as the global settings. You can also directly call these functions.

You can also type `psgmain` from the command line to access it if you have pip installed your copy of PySimpleGUI.

<!-- <+func.main+> -->
<!-- <+func.main_get_debug_data+> -->
<!-- <+func.main_global_pysimplegui_settings+> -->
<!-- <+func.main_sdk_help+> -->
<!-- <+func.test+> -->


## Debugger

<!-- <+func.show_debugger_popout_window+> -->
<!-- <+func.show_debugger_window+> -->

-------------

## Themes

The way to get Windows that have elements that have matching colors.

<!-- <+func.theme+> -->
<!-- <+func.theme_add_new+> -->
<!-- <+func.theme_background_color+> -->
<!-- <+func.theme_border_width+> -->
<!-- <+func.theme_button_color+> -->
<!-- <+func.theme_button_color_background+> -->
<!-- <+func.theme_button_color_text+> -->
<!-- <+func.theme_element_background_color+> -->
<!-- <+func.theme_element_text_color+> -->
<!-- <+func.theme_global+> -->
<!-- <+func.theme_input_background_color+> -->
<!-- <+func.theme_input_text_color+> -->
<!-- <+func.theme_list+> -->
<!-- <+func.theme_previewer+> -->
<!-- <+func.theme_previewer_swatches+> -->
<!-- <+func.theme_progress_bar_border_width+> -->
<!-- <+func.theme_progress_bar_color+> -->
<!-- <+func.theme_slider_border_width+> -->
<!-- <+func.theme_slider_color+> -->
<!-- <+func.theme_text_color+> -->
<!-- <+func.theme_text_element_background_color+> -->
<!-- <+func.theme_use_custom_titlebar+> -->


--------------------

## Platform Checks

These are simple functions you can use that return a boolean  True if sys.platform matches the platform.  Saves you the trouble of importing sys and then looking up the values for sys.platform.

<!-- <+func.running_linux+> -->
<!-- <+func.running_mac+> -->
<!-- <+func.running_trinket+> -->
<!-- <+func.running_windows+> -->


------------------------


## UserSettings API - Class Interface

The User Settings API is used to store your settings information from one session to another or from one program to another.  They are stored on disk in either JSON or INI file formats.

In addition to user settings files, there is also a global PySimpleGUI settings file that PySimpleGUI uses to store information about the default Python interpreter you want to use with the Exec APIs, the default theme. You can directly access the global settings through the UserSettings object: `pysimplegui_user_settings`

<!-- <+UserSettings.doc+> -->
<!-- <+UserSettings.__init__+> -->

### delete_entry
<!-- <+UserSettings.delete_entry+> -->

### delete_file
<!-- <+UserSettings.delete_file+> -->


### delete_section
<!-- <+UserSettings.delete_section+> -->


### exists
<!-- <+UserSettings.exists+> -->

### get
<!-- <+UserSettings.get+> -->

### get_dict
<!-- <+UserSettings.get_dict+> -->

### get_filename
<!-- <+UserSettings.get_filename+> -->

### load
<!-- <+UserSettings.load+> -->

### read
<!-- <+UserSettings.read+> -->

### save
<!-- <+UserSettings.save+> -->

### set
<!-- <+UserSettings.set+> -->

### set_default_value
<!-- <+UserSettings.set_default_value+> -->

### set_location
<!-- <+UserSettings.set_location+> -->

### write_new_dictionary
<!-- <+UserSettings.write_new_dictionary+> -->


## User Settings API - Function Interface

You have a couple of ways to access User Settings if your information is stored in JSON format.  If you're using the INI format, then you must use the `UserSettings` object.

These are particularly useful directly in layouts, allowing you to you can easily set default values.

<!-- <+func.user_settings+> -->
<!-- <+func.user_settings_delete_entry+> -->
<!-- <+func.user_settings_delete_filename+> -->
<!-- <+func.user_settings_file_exists+> -->
<!-- <+func.user_settings_filename+> -->
<!-- <+func.user_settings_get_entry+> -->
<!-- <+func.user_settings_load+> -->
<!-- <+func.user_settings_save+> -->
<!-- <+func.user_settings_set_entry+> -->
<!-- <+func.user_settings_silent_on_error+> -->
<!-- <+func.user_settings_write_new_dictionary+> -->

-----------------

## Exec APIs - Launching Subprocesses

These API calls are used to launch subprocesses.  You can launch Python files or any type of executable file.  In these calls is where you invoke the editor and file explorer that was specified in the PySimpleGUI Global Settings.

<!-- <+func.execute_command_subprocess+> -->
<!-- <+func.execute_editor+> -->
<!-- <+func.execute_file_explorer+> -->
<!-- <+func.execute_find_callers_filename+> -->
<!-- <+func.execute_get_results+> -->
<!-- <+func.execute_py_file+> -->
<!-- <+func.execute_subprocess_still_running+> -->

------------

## Clipboard APIs

Note that this clipboard uses tkinter's clipboard. There is a known limitation that your application needs to remain running until you've pasted the contents.  Managed to get around this limitation so that the clipboard stays set after you exit your application, but only have it working for Windows systems.

<!-- <+func.clipboard_get+> -->
<!-- <+func.clipboard_set+> -->


## Misc

<!-- <+func.fill_form_with_values+> -->
<!-- <+func.FillFormWithValues+> -->




## Application-wide Configuration / Settings (`set_options`, etc)

<!-- <+func.get_globals+> -->
<!-- <+func.set_global_icon+> -->
<!-- <+func.set_options+> -->


### Non PEP8 versions

<!-- <+func.SetGlobalIcon+> -->
<!-- <+func.SetOptions+> -->



## Old Themes (Look and Feel) - Replaced by theme()

You should NOT use these calls.  They are here for your reference should you run into them in existing code.

<!-- <+func.ChangeLookAndFeel+> -->
<!-- <+func.ListOfLookAndFeelValues+> -->
<!-- <+func.preview_all_look_and_feel_themes+> -->
<!-- <+func.list_of_look_and_feel_values+> -->
<!-- <+func.change_look_and_feel+> -->

-------------

This documentation is copyright 2021 by PySimpleGUI(tm)

The PySimpleGUI name and logo are trademarked.  Use without permission is prohibited.

Republishing the copyrighted PySimpleGUI documentation and selling it ***IS PROHIBITED***.

***When in doubt, ask.***