0% acharam este documento útil (0 voto)
2 visualizações52 páginas

Live de Python #202

O documento apresenta uma live sobre a biblioteca PySimpleGUI, que facilita a criação de interfaces gráficas em Python. Ele aborda aspectos como widgets, layouts, temas e a estrutura do projeto, além de discutir problemas e pontos de atenção na utilização da biblioteca. A live também inclui um espaço para prática e interação com os participantes.

Enviado por

Well Silva
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
2 visualizações52 páginas

Live de Python #202

O documento apresenta uma live sobre a biblioteca PySimpleGUI, que facilita a criação de interfaces gráficas em Python. Ele aborda aspectos como widgets, layouts, temas e a estrutura do projeto, além de discutir problemas e pontos de atenção na utilização da biblioteca. A live também inclui um espaço para prática e interação com os participantes.

Enviado por

Well Silva
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

Live de Python #202

Roteiro

1. Sobre o PySimpleGUI 4. Sistema de eventos


Como executar as ações da interface
Uma apresentação da biblioteca

2. Widgets, Window e Layouts 5. Playground


O core da lib Bora fazer alguma tela, pq não?

3. Temas 6. Pontos de atenção


Uma vasta e diversa lista A hora de falar sério
[Link]/dunossauro [Link]/livedepython [Link]@[Link]

Ajude o projeto <3


Acássio Anjos, Ademar Peixoto, Alexandre Harano, Alexandre Souza, Alexandre Takahashi, Alexandre Villares, Alex Lima,
Alynne Ferreira, Alysson Oliveira, Ana Carneiro, Ana Padovan, Andre Azevedo, André Rocha, Aquiles Coutinho, Arnaldo
Turque, Ayrton Santana, Bloquearsites Farewall, Bruno Barcellos, Bruno Freitas, Bruno Guizi, Bruno Oliveira, Bruno Ramos,
Caio Nascimento, César Almeida, Christiano Morais, Clara Battesini, Daniel Freitas, Daniel Haas, Danilo Segura, Dartz Dartz,
David Kwast, Delton Porfiro, Dhyeives Rodovalho, Diego Farias, Diego Guimarães, Dilenon Delfino, Douglas Bastos, Douglas
Braga, Douglas Martins, Douglas Zickuhr, Eli Júnior, Emerson Rafael, Érico Andrei, Eugenio Mazzini, Euripedes Borges,
Evandro Avellar, Everton Silva, Fabio Barros, Fábio Barros, Fabio Castro, Fábio Thomaz, Felipe Rodrigues, Fernanda Prado,
Fernando Rozas, Fernando Sousa, Flávio Meira, Flavkaze Flavkaze, Franklin Silva, Gabriel Barbosa, Gabriel Simonetto,
Geandreson Costa, Guilherme Felitti, Guilherme Gall, Guilherme Ostrock, Gustavo Dettenborn, Heitor Fernandes, Henrique
Junqueira, Igor Taconi, Ismael Ventura, Israel Gomes, Italo Silva, Jair Andrade, Jairo Lenfers, Janael Pinheiro, Jean Marcio,
João Lugão, Johnny Tardin, Jonatas Leon, Jônatas Silva, Jorge Plautz, Jose Mazolini, Juan Gutierrez, Juliana Machado,
Julio Silva, Kaio Peixoto, Kaneson Alves, Leandro Botassio, Leandro Miranda, Leonardo Cruz, Leonardo Mello, Leonardo
Nazareth, Lucas Adorno, Lucas Mello, Lucas Mendes, Lucas Oliveira, Lucas Polo, Lucas Praciano, Lucas Teixeira, Lucas
Valino, Luciano Silva, Luciano Teixeira, Luiz Junior, Luiz Lima, Luiz Paula, Maiquel Leonel, Marcelino Pinheiro, Marcelo Matte,
Márcio Martignoni, Marco Mello, Marcos Gomes, Marco Yamada, Maria Clara, Marina Passos, Mario Deus, Mateus Lisboa,
Matheus Silva, Matheus Vian, Mírian Batista, Murilo Andrade, Murilo Cunha, Murilo Viana, Natan Cervinski, Nicolas Teodosio,
Osvaldo Neto, Otávio Barradas, Patricia Minamizawa, Patrick Felipe, Paulo Braga, Paulo Tadei, Pedro Duarte, Pedro Henrique,
Pedro Pereira, Peterson Santos, Priscila Santos, Rafael Lopes, Rafael Rodrigues, Rafael Romão, Ramayana Menezes,
Reinaldo Silva, Renan Moura, Renato Veirich, Riverfount Riverfount, Robson Maciel, Rodrigo Brandao, Rodrigo Ferreira,
Rodrigo Freire, Rodrigo Junior, Rodrigo Vaccari, Rodrigo Vieira, Rogério Sousa, Ronaldo Silva, Rui Jr, Samanta Cicilia, Sara
Selis, Thiago Araujo, Thiago Borges, Thiago Bueno, Thiago Curvelo, Thiago Moraes, Thiago S, Tiago Minuzzi, Tony Dias,
Victor Wildner, Vinícius Bastos, Vinicius Figueiredo, Vítor Gomes, Vitor Luz, Vlademir Souza, Vladimir Lemos, Wellington
Abreu, Wesley Mendes, William Alves, Willian Lopes, Wilson Neto, Yury Barros

Obrigado você
A
Um pouco sobre o
pysimplegui Lib
O projeto

● PySimpleGUI
○ Python Simple Graphical User Interface
○ Interface Gráfica de Usuário Simples
● O projeto teve início 2018 (~4 anos)
● versão atual 4.60.0
● Mantido por @MikeTheWatchGuy
● GNU Lesser: Pode ser incorporada sem atribuição
A biblioteca

O PySimpleGUI não é um framework de janelas, como o TK, GTK, QT,


WxWindow ou Kivy.

É uma "família" de wrappers para as bibliotecas originais. Parecido com o


Toga, do projeto beeware (Live de Python #143)
Estrutura

O Projeto

PySimpleGUI PySimpleGUIQt PySimpleGUIWeb PySimpleGUIWx


Estrutura

O Projeto

PySimpleGUI PySimpleGUIQt PySimpleGUIWeb PySimpleGUIWx

Tkinter PySide2 Remi WxWindow


Estrutura

O Projeto

PySimpleGUI PySimpleGUIQt PySimpleGUIWeb PySimpleGUIWx

Tkinter PySide2 Remi WxWindow

Tk / TCL QT HTML / CSS / JS "Nativo"


Estrutura

O Projeto

PySimpleGUI PySimpleGUIQt PySimpleGUIWeb PySimpleGUIWx

Tkinter PySide2 Remi WxWindow

Tk / TCL QT HTML / CSS / JS "Nativo"


Sub projetos

PSGTray PSGBuilder

O Projeto

PySimpleGUI PySimpleGUIQt PySimpleGUIWeb PySimpleGUIWx


Sub projetos

PSGTray PSGBuilder

Faz o build para


Coloca a aplicação na
executável usando
bandeja de aplicativos
pyinstaller
O Projeto

PySimpleGUI PySimpleGUIQt PySimpleGUIWeb PySimpleGUIWx


pip install PySimpleGUI

Bora instalar
Window
Widgets
Layouts O core das
interfaces
O básico necessário

Título da Janela

Window
Janela
Ainda no básico

Widgets
Criando uma Janela
Criando uma Janela
Layouts

Para o PySImpleGUI, o layout é uma matriz de widgets.


Layouts
Widgets

A biblioteca de widgets disponíveis no PSG é composta por 34 widgets.

Sendo 27 componentes, e 5 widgets de estrutura e variações de


componentes.

Componentes básicos:

● Texto
● Input de texto
● Botão
● Menu
● Imagem
● Slider
● Barra de progresso
Widgets

A biblioteca de widgets disponíveis no PSG é composta por 34 widgets.

Sendo 27 componentes, e 5 widgets de estrutura e variações de


componentes.

Componentes básicos:

● Texto all_widgets.py
● Input de texto
● Botão
● Menu
● Imagem
● Slider
● Barra de progresso
Um Layout Básico

Image
Input

Button
Text
Aplicando o layout no código
Com código de verdade
pip install PySimpleGUIQt
pip install PySimpleGUIWx
pip install PySimpleGUIWeb *

Olhando as variações
Widgets de layout

● Column
● Seperator
○ Horizontal
○ Vertical
● Push
○ Horizontal
○ Vertical
● Sizer
Overview
Overview

Coluna Coluna
Overview

Push
Separador
PopUps
Resumindo

popups Window

Layout

Widgets

Componente Estrutura
Uma grande
variedade Temas
Observando a variedade de temas
Usando os temas
Event
os Fazendo as coisas
acontecerem
[Link]()

Os eventos são lidos pela janela usando o método .read(). E os estados de


todos os widgets são capturados todas às vezes.
[Link]()

Os eventos são lidos pela janela usando o método .read(). E os estados de


todos os widgets são capturados todas às vezes.
Loop de eventos
Loop de eventos
Identificadores de widgets

Todos os widgets tem um atributo `key` ele é passado por parâmetro na


instância do widget. Caso não seja usado, o PySImpleGUI vai definir um
valor numérico a ele. Por exemplo:
Identificadores de widgets

Todos os widgets tem um atributo `key` ele é passado por parâmetro na


instância do widget.
Identificadores de widgets
Um evento completo - Key do evento
Um evento completo - Valores dos widgets
Um evento completo - Update do widget
Play
Bora brincar um
pouco groud
Aten
ção! Hora de tirarmos
algumas conclusões
Problemas

● Documentação confusa
● 24 mil linhas de código em um único arquivo
○ Versão TK
● Os ports ainda não contam com todos os widgets implementados
● Não existem testes
● Não suporta programação assíncrona
● Bandit issues:
○ 5 vulnerabilidades críticas
■ Eval e Popen
○ 94 vulnerabilidades ao total
■ 68 try_except_pass
[Link]/dunossauro [Link]/livedepython [Link]@[Link]

Ajude o projeto <3

Você também pode gostar