Biblioteca é um conjunto de funções/objetos que você chama quando quer (você controla o fluxo). Framework fornece estrutura, ciclo de vida e convenções; ele “chama” seu código em pontos específicos.
| Opção | Pontos Fortes | Desafios | Uso típico |
|---|---|---|---|
| Tkinter (stdlib) | Vem com o Python, simples, leve. | Widgets limitados, visual mais “cru”. | Iniciação, ferramentas internas simples. |
| PyQt / PySide | Conjunto de widgets muito completo, visual nativo. | Mais complexo; licenciamento/empacotamento demandam atenção. | Apps profissionais com UI rica e nativa. |
| Kivy | Multiplataforma (inclui mobile), interface moderna e customizável. | Paradigma próprio; estilo não nativo. | Apps multimídia, touch, mobile/desktop. |
| Electron (JS/HTML/CSS) | UI web, componentes ricos, ecossistema JS. | Consumo de memória/CPU, stack JS. | Apps tipo Slack/VS Code, com devs JS. |
| Flet (Python, inspirado no Flutter) | Produtivo, multiplataforma (web/desktop), API simples em Python. | Ecossistema menor que Qt; depende do runtime Flet. | Ensino, protótipos rápidos, sistemas desktop/web em Python. |
Observação: “melhor” depende do contexto (equipe, prazo, requisitos de UI, acesso a hardware, distribuição, etc.).
page.update()).flet pack (veremos na Semana 11).
Abaixo, dois passos clássicos: “Hello, Flet!” e um botão que altera texto.
import flet as ft
def main(page: ft.Page):
page.title = "Hello, Flet!"
page.add(ft.Text("Olá, Flet!"))
ft.app(target=main)
import flet as ft
def main(page: ft.Page):
titulo = ft.Text("Clique no botão")
def on_click(e):
titulo.value = "Clicou!"
page.update()
page.add(titulo, ft.ElevatedButton("Clique", on_click=on_click))
ft.app(target=main)
Conceitos-chave: Page, Controls, eventos e
page.update().
| Cenário | Requisito-chave | Sugestão |
|---|---|---|
| Preciso de UI nativa complexa, treeviews avançados, impressão fina | Widgets ricos e maturidade | PyQt/PySide |
| Quero começar rápido com Python e publicar também na web | Produtividade + multiplataforma | Flet |
| App simples interno, sem dependências pesadas | Leve e direto | Tkinter |
| Equipe domina JS e quer UI web moderna | Stack JS, componentes web | Electron |
| Preciso rodar também em mobile com alto controle visual | Multiplataforma incluindo mobile | Kivy |
Obs.: em projetos reais, avalie também distribuição, suporte, comunidade e prazos.
venv, instale flet
(pip install flet).ElevatedButton por um IconButton e
personalize o texto (tamanho, negrito).Desktop_Semana02_NomeSobrenome.pdf contendo:
| Critério | Descrição | Pontos |
|---|---|---|
| Ambiente | venv criado/ativado + flet instalado | 0–2,0 |
| Hello, Flet! | Print e execução corretos | 0–2,0 |
| Eventos | Botão funcional + contador | 0–3,0 |
| Personalização | IconButton/estilo aplicado | 0–1,0 |
| Justificativa | Clara, objetiva, 5–8 linhas | 0–2,0 |
| Total | 10,0 | |