# PySimpleGUI

PySimpleGUI es un contenedor de la API de Python del módulo Tkinter que permite al programador utilizar los mismos elementos de la interfaz de usuario que con Tkinter pero con una interfaz más intuitiva. PySimpleGUI se estableció con el propósito de crear un proceso de desarrollo de la GUI de Python más fácil de usar, y agrega la capacidad de definir diseños personalizados.

## Licencia

PySimpleGUI está aprobado por OSI bajo la Licencia Pública General Reducida de GNU.

## Objetivo

Lanzado en julio de 2018, PySimpleGUI buscó una solución para optimizar los esfuerzos de desarrollo de la GUI de Python y facilitar a los usuarios el uso de una interfaz gráfica. Está dirigido al desarrollador, para que puedan crear una GUI personalizada con un código lo más conciso posible.

## Características

Está completamente basado en el lenguaje Python y se utiliza para desarrollar interfaces GUI de manera muy conveniente. Tiene una interfaz de estilo Python muy amigable que mejora sustancialmente la eficiencia del desarrollo.
Sus principales características incluyen:
* Las ventanas de interfaz y los controles utilizados son los mismos que los de tkinter, Qt, WxPython y Remi.
* El código escrito se reduce entre un 50% y un 90%.
* No es necesario escribir la función de devolución de llamada.
* Se uede acceder a todos los controles en el marco de la GUI.
* Admite GUI web y de escritorio.
* Tiene una interfaz amigable
* Está orientada a desarrolladores de Python novatos y experimentados.
* Existen más de 170 programas de demostración que explican cómo integrar paquetes actualmente populares, como OpenCV, Matplotlib, PyGame, etc.
* Hay una amplia documentación.
Las características de PySimpleGUI se pueden dividir en llamadas de “alto nivel” que permiten a la persona que las utiliza realizar operaciones de entrada/salida en una sola llamada de función y capacidades de “GUI personalizada”. Las llamadas de alto nivel suelen comenzar con "Popup". El más básica es Popup, que muestra un número variable de elementos en una ventana emergente. Se parecen a la declaración "print" incorporada, tomando cualquier número de variables en cualquier formato y mostrándolas en una ventana. Las llamadas Popup que recopilan la entrada del usuario incluyen PopupGetText, PopupGetFile y PopupGetFolder. Las GUI personalizadas se logran creando primero un "diseño de GUI" que se utiliza para crear y mostrar una ventana. El diseño de la GUI se compone de "Elementos", el término de PySimpleGUI para un "Widget" de la GUI.
Se puede simplificar y compactar el código aprovechando dos de los "atajos" de PySimpleGUI. Los nombres de los elementos se pueden escribir en formato abreviado. Reduce la cantidad de texto en el código sin perder significado.
Un segundo mecanismo de atajo son los botones predefinidos. Estos son botones que se encuentran comúnmente en todas las GUI, como "aceptar", "cancelar", "sí". En lugar de escribir Button ('ok'), un atajo de botón permite escribir Ok(*), Cancel, Yes.
Ejemplos de elementos UI, botones y abreviaciones :
| Elementos UI | Elementos UI | Botones | Botones | Abreviaciones |
| Checkbox Column FileBrowse Image InputCombo InputText Listbox Multiline Output | ProgressBar Radio ReadFormButton RealtimeButton SimpleButton Slider Spin Text | FolderBrowse Cancel Exit FileBrowse FileSaveAs FolderBrowse No OK Ok | Quit ReadFormButton RealtimeButton Save SimpleButton Submit Yes | T = Text Txt = Text In = InputText Input = IntputText Combo = InputCombo DropDown = InputCombo Drop = InputCombo |

## Objetivos de Diseño

El objetivo de PySimpleGUI con la API es facilitarle la tarea al programador y que pueda trabajar como siempre lo ha hecho en Python. Dado que las GUI son visuales, es deseable que el código coincida visualmente con lo que se ve en la pantalla.
Algunos ejemplos de cómo este paquete utiliza las construcciones del lenguaje de forma natural y aprovecha algunas de las mejores caracterísitcas de Python:
* Los formularios se representan como listas de Python.
** Un formulario es una lista de filas.
** Una fila es una lista de elementos.
* Los valores devueltos son una lista botones pulsados y valores de entrada.
* Los valores devueltos también se pueden representar como un diccionario.
Las llamadas al SDK se contraen en una sola línea de código Python que presenta una GUI personalizada y devuelve valores.
Además de una API similar a Python, la documentación de PySimpleGUI proporciona una serie de fragmentos de código de ejemplo que permiten a los desarrolladores que lo necesiten ponerse en marcha copiando, pegando, y a veces modificando el código para crear la GUI deseada sin necesidad de aprender los fundamentos de la biblioteca antes de usarla.

## Ejemplos

PySimpleGUI se centra en la creación de la interfaz de usuario nativa de Python con un código lo más sencillo posible. Al crear una interfaz de usuario, cada llamada tiene parámetros opcionales que permiten cambiar la apariencia. Se puede cambiar el color de un botón agregando un parámetro button_color a su widget.
Con una GUI simple, resulta práctico "asociar" archivos .py con el intérprete de Python en Windows. Al hacer doble clic en un archivo .py y aparecerá una ventana GUI, una experiencia más agradable que abrir una ventana DOS y escribir un comando.

### Cuadro de diálogo abrir carpeta
## Compatibilidad

* Python 2.7 tkinter
* Python 3 tkinter
* Qt
* Windows
* Mac
* Linux
* PyPy3