PySimpleGUI jest wrapperem ułatwiającym i przyspieszającym tworzenie aplikacji okienkowych w Pythonie. Dostępne są 4 porty, bazujące na następujących bibliotekach: tkinter, Qt, WxPython, Remi (interfejs webowy!).
Zmiana portu np. z PySimpleGUI (bazującego na tkinterze) na PySimpleGUIQt (korzystającego z Qt) nie wymaga dalszych zmian w kodzie programu! Więcej szczegółów można przeczytać >>tutaj<<
Przykładowy program pobierający dane od użytkownika i wyświetlający pobrane dane w drugim oknie:
import PySimpleGUIQt as sg
layout = [[sg.Text('Wprowadź przykładowy tekst')],
[sg.InputText()],
[sg.Submit('Zastosuj'), sg.Cancel('Anuluj')]]
window = sg.Window('Okno pobierające dane', layout)
event, values = window.Read()
window.Close()
if event == 'Zastosuj':
text_input = values[0]
sg.Popup('Wprowadzony text:', text_input, title='Okno wyświetlające
dane')
Pierwsza linia skryptu importuje moduł wrappera (musi być zainstalowany w systemie np. przez pip, jak również framework, który jest wykorzystywany przez dany port – w tym przypadku Qt).
Kolejna linia definiuje wygląd szablonu (layout), który jest listą list. Każda kolejna lista definiuje kolejny wiersz szablonu – w pierwszym wierszu element Text – który tworzy etykietę o treści Wprowadź przykładowy tekst, w drugim pole wprowadzania InputText, a w trzecim wierszu przyciski Zastosuj i Anuluj.
Następnie tworzymy okno i przypisujemy jako drugi argument wcześniej utworzony layout.
Naciśnięcie jakiegokolwiek przycisku lub zamknięcie okna spowoduje przejście do odczytu stanu okna – zwracana jest krotka składającą się z: elementu event (np. nazwy przycisku lub None gdy naciśnięto przycisk zamykania okna) oraz słownika zawierającego klucze opisujące pola wprowadzania okna oraz wartości wprowadzone w te pola. Gdy nie podano argumentu key dla pola wprowadzania podczas tworzenia layoutu, to domyślnie kluczami słownika są kolejne wartości całkowitoliczbowe. W powyższym przykładzie wpisany tekst, który jest zapisany w słowniku values jako wartość klucza 0, jest przekazywany jako element napisu wyświetlanego w okienku popup (Okno wyświetlające dane).