Python TkInter de Iniciante a Vencedor
- Descrição
- Currículo
- FAQ
- Revisões
Bem-vindo ao Python TkInter de Iniciante a Vencedor! Um óptimo curso sobre como criar aplicativos para desktop!
Juntos vamos aprender, explorar e nos divertir aproveitando ao máximo o Python e o TkInter! Vamos criar aplicativos interessantes e úteis.
Convido você não apenas a dominar o TkInter, mas também aprender a pensar, a projetar e estruturar seu código, a aproveitar várias ferramentas para fazê-lo mais rápido, melhor e limpo, como um profissional!
Primeiro vamo-nos concentrar na criação de aplicativos como uma calculadora ou um gerenciador de estoque de produtos… teremos a oportunidade de aplicar muitos widgets como Frames, Labels, Buttons, Spinboxes, LabelFrames, etc. Também usaremos três Layout Managers para posicionar nossos widgets: grid, pack e place.
Como bônus, vamos integrar alguns desses aplicativos com inúmeras tecnologias… Usaremos bancos de dados, interagiremos com APIs Web, geraremos documentos como PDFs e Docx!
Nossa imaginação é o limite!
Meu nome é Hugo Ferro, comecei minha jornada de programação em 1996 quando ganhei meu primeiro computador aos 12 anos… Essa caixa mudou minha vida! Tornei-me um Engenheiro de Software com experiência em uma ampla gama de tecnologias…
Sua jornada começa agora! Sou seu professor, sou seu parceiro nessa grande aventura que é aprender!
As primeiras 10 palestras deste curso (1h56m), na secção “O meu Gestor de Stock de Produtos”, são GRATUITAS para você poder avaliar! O que você está esperando?
Obrigado pelo seu tempo, vejo você no curso 🙂
-
1Introdução [Parte 0 de 10]Vídeo Aula
Aqui nós iremos ver:
O aspecto da Calculadora que será criada;
O que precisamos para começar.
-
2Estrutura Base [Parte 1 de 10]Vídeo Aula
Aqui iremos aprender como:
Criar uma janela com TKinter;
Definir o título da janela;
Definir o tamanho mínimo e máximo de uma janela;
Criar Frames de TKinter, separando a estrutura em três áreas - top, middle e bottom;
Definir a largura, altura e cor de fundo de uma Frame;
Definir a posição exacta onde a Frame deverá aparecer na janela;
Fazer a Frame crescer ou diminuir de acordo com o tamanho actual da janela;
Estruturar o código.
-
3Construir a Tela [Parte 2 de 10]Vídeo Aula
Aqui iremos aprender como:
Criar uma Label;
Adicionar texto a uma Label;
Inserir e posicionar uma Label dentro de uma Frame;
Fazer a Label crescer ou diminuir de acordo com o tamanho corrente da Frame;
Posicionar o texto dentro de uma Label - Alinhar à direita, centro ou esquerda;
Definir uma font e um tamanho de letra para o texto na Label;
Colocar o texto de uma Label a negrito.
-
4Construir os botões de igual e "clear" [Parte 3 de 10]Vídeo Aula
Aqui iremos aprender como:
Criar um Button (botão);
Adicionar texto ao botão;
Definir a font e o tamanho da letra do texto de um botão;
Adicionar uma acção ao botão (o que deverá acontecer quando clicarmos nele);
Inserir e posicionar o botão dentro de uma Frame;
Fazer o botão crescer ou diminuir de acordo com o tamanho da Frame.
-
5Construir os botões de números e operadores [Parte 4 de 10]Vídeo Aula
Aqui iremos aprender como:
Optimizar a criação de botões com um for loop;
Passar parâmetros à acção de um botão - com uma lambda function;
Passar parâmetros à acção de um botão - sem uma lambda function.
Também, iremos compreender como:
As funções lambda funcionam;
Como o parâmetro command de um botão funciona.
-
6Definir acções para botões de números e operadores [Parte 5 de 10]Vídeo Aula
Aqui iremos aprender como:
Distinguir se um carácter é digito ou não;
Alterar o texto de uma Label;
Detectar se uma string começa com um carácter específico;
Aplicar lógica para resolver um problema.
-
7Como avaliar uma expressão?! [Parte 6 de 10]Vídeo Aula
Aqui iremos aprender sobre regras de precedência de operadores.
-
8Definir as classes Node e ExpressionTree [Parte 7 de 10]Vídeo Aula
Aqui iremos aprenderá como definir a estrutura base para criar uma árvore binária, as classes: Node e ExpressionTree.
-
9Construir a árvore binária [Parte 8 de 10]Vídeo Aula
Aqui iremos aprender como adicionar elementos à árvore binária. Além disso, iremos ver como ela será conectada com nossa calculadora!
-
10Avaliar a expressão [Parte 9 de 10]Vídeo Aula
É aqui que tudo vai fazer sentido! Iremos aprender como tirar proveito da árvore binária para calcular uma expressão e por que isso funciona!
-
11Divisões por Zero [Parte 10 de 10]Vídeo Aula
Aqui vamos resolver um pequeno problema, divisão por zero! Iremos aprender como aplicar lógica extra para melhorar a nossa calculadora.
-
12Criar um Arquivo Executável [Bonus 1]Vídeo Aula
Aqui vamos instalar e usar o Auto Py to Exe para gerar um arquivo autônomo executável para nosso aplicativo.
https://pypi.org/project/auto-py-to-exe/
-
13Construir a Janela Principal [Parte 1 de 39]Vídeo Aula
Aqui vamos aprender como criar um objecto Tk (a janela) e iniciá-lo.
Veremos como definir um título, definir o tamanho da janela, definir a posição da janela na tela e definir a janela como não redimensionável!
-
14Definir Áreas Principais com Frames [Parte 2 de 39]Vídeo Aula
Aqui vamos aprender como criar Frames, definir sua largura/altura e alterar sua cor de fundo.
Também veremos como organizar o código em partes lógicas e aprenderemos um pouco sobre TkInter Layout Managers: grid, pack e place!
-
15Criar Butões Add/Delete [Parte 3 de 39]Vídeo Aula
Aqui vamos aprender a criar Botões! Vamos definir seu texto, o que deve fazer quando clicado e como desabilitar um botão.
Sobre o pack, aprenderemos como colocar elementos lado a lado.
-
16Criar Inputs de Pesquisa [Parte 4 de 39]Vídeo Aula
Aqui iremos usar 3 widgets: Label, Entry e Spinbox. Veremos como definir o texto, justificá-lo (alinhamento do texto) e adicionar uma borda aos widgets. Sobre o Spinbox, também aprenderemos como definir a largura, definir o valor mínimo (from_), definir o valor máximo (to), valor padrão (textvariable com um objeto IntVar), defini-lo como somente leitura (estado do Spinbox) e como o valor de incremento irá funcionar.
-
17Criar Botões de Pesquisa [Parte 5 de 39]Vídeo Aula
Aqui vamos aprender como obter o valor de um Entry e um Spinbox! Sobre o método pack usaremos o parâmetro padx!
-
18Definir Secção de Variáveis Globais [Parte 6 de 39]Vídeo Aula
Aqui vamos alterar o código para definir uma área específica de variáveis globais!
-
19Adicionar Estilos de Fonte [Parte 7 de 39]Vídeo Aula
Aqui vamos aprender como usar as fontes, alterar a família da fonte, tamanho e peso (para ficar em negrito). Vamos aplicá-los em Labels, Buttons e Entries!
-
20Usando Fontes TTF [Parte 8 de 39]Vídeo Aula
Aqui vamos aprender como listar as fontes disponíveis. Também vamos baixar/instalar e usar fontes TTF (True Type Fonts). Finalmente vou mostrar como desinstalar uma fonte TTF no Windows 10!
-
21Definir Área da Lista de Produtos [Parte 9 de 39]Vídeo Aula
Aqui vamos aprender uma dica útil sobre o Visual Studio Code, também vamos aprender como obter a largura e a altura de um Frame!
-
22Construir Área de Navegação de Páginas [Parte 10 de 39]Vídeo Aula
Aqui vamos rever como criar Botões, Labels e como fazer pack lado a lado.
-
23Construir Área da Lista de Produtos (Linhas) [Parte 11 de 39]Vídeo Aula
Aqui vamos rever como obter a largura e a altura de um Frame. Aprenderemos como criar Frames dinamicamente e como definir bordas para as Frame! Também darei algumas dicas sobre o Visual Studio Code!
-
24Construir Área da Lista de Produtos (Colunas) [Parte 12 de 39]Vídeo Aula
Aqui vamos rever como criar Frames dinamicamente, como obter a largura/altura de um Frame, como adicionar bordas e fazer pack de Frames lado a lado!
(!) No final tenho uma nota final importante!!!
-
25Definir Classes Product e DataManager [Parte 13 de 39]Vídeo Aula
Aqui veremos como podemos expressar a ideia de um produto (Classe Produto) e como podemos gerenciar os dados (Classe DataManager).
-
26Carregar Linhas de Produtos [Parte 14 de 39]Vídeo Aula
Aqui vamos estruturar o código para dividir a tarefa de carregar as propriedades do produto em uma linha.
-
27Carregar Coluna Name/Description [Parte 15 de 39]Vídeo Aula
Aqui vamos rever como criar Frames, obter sua largura e altura, como criar Labels e definir sua fonte.
-
28Carregar Coluna Stock Quantity [Parte 16 de 39]Vídeo Aula
Aqui vamos aprender algo sobre Frames que não esperávamos!!
Veremos como usar frame.propagate(False) e também pack(expand= True).
-
29Carregar Coluna Delete Check Button [Parte 17 de 39]Vídeo Aula
Aqui vamos aprender como criar um botão de verificação e como ele funciona! Veremos as classes Checkbutton e BooleanVar.
-
30Carregar Coluna da Imagem [Parte 18 de 39]Vídeo Aula
Aqui vamos aprender como carregar uma Imagem em um Label!!!
Pillow é necessário para esta palestra! Com o Pillow vamos abrir um arquivo de imagem, redimensioná-lo e convertê-lo em algo que o TkInter entenda.
-
31Carregar Navegador de Páginas [Parte 19 de 39]Vídeo Aula
Aqui veremos como habilitar/desabilitar um Botão e também como alterar o texto de um Label!
-
32Carregar Número Total de Páginas [Parte 20 de 39]Vídeo Aula
Aqui vamos calcular o número total de páginas com a ajuda de math.ceil!
-
33Acção Move Prev/Next Page [Parte 21 de 39]Vídeo Aula
Aqui vamos refatorar alguns códigos e aprender como remover elementos de um Frame!
-
34Mecanismo de Acção de Pesquisa [Parte 22 de 39]Vídeo Aula
Aqui vamos começar a implementar o mecanismo de busca!
-
35Filtragem na Acção de Pesquisa [Parte 23 de 39]Vídeo Aula
Aqui vamos implementar a filtragem dos dados para a ação de busca!
-
36Acção Limpar Pesquisa [Parte 24 de 39]Vídeo Aula
Aqui vamos limpar as entradas de pesquisa do Entry e do Spinbox!
-
37Acção Mark for Delete [Parte 25 de 39]Vídeo Aula
Aqui veremos como manter uma lista com os produtos a serem excluídos. Também mudaremos o estado de um botão para ATIVO ou DESATIVADO!
-
38Reset Produtos para Eliminar [Parte 26 de 39]Vídeo Aula
Aqui vamos resolver o bug sobre a lista de produtos a serem excluídos.
-
39Acção de Eliminar Produtos [Parte 27 de 39]Vídeo Aula
Aqui vamos finalmente excluir os produtos! Também veremos como fazer uma janela popup (messagebox) para perguntar ao usuário se ele quer deletar ou não!
-
40Acção Adicionar/Editar Produtos [Parte 28 de 39]Vídeo Aula
Aqui vamos aprender como vincular uma ação ao evento de clique com o botão direito do mouse!
-
41Editor de Produtos [Parte 29 de 39]Vídeo Aula
Aqui vamos aprender como criar uma nova janela! Chama-se Toplevel!! Também criaremos uma nova classe que representará o Editor de Produto!
-
42Definir Áreas do Editor de Produtos [Parte 30 de 39]Vídeo Aula
Aqui vamos separar a janela Product Editor em três Frames. Vamos rever alguns dos conceitos que aprendemos antes.
-
43Editor de Stock + Botão Add/Update [Parte 31 de 39]Vídeo Aula
Aqui vamos rever como criar elementos das classes Frame, Label, Button, Spinbox e IntVar.
Também ficará mais claro para nós como propriedades como propagate (Frames) e expand (pack) funcionam!
-
44Frames de Nome/Descrição [Parte 32 de 39]Vídeo Aula
Aqui vamos aprender sobre um novo elemento, um novo widget!!! Chama-se LabelFrame!!!
-
45Inputs de Nome/Descrição [Parte 33 de 39]Vídeo Aula
Aqui vamos descobrir uma nova entrada para texto!!! Não é a Entry! É o widget Text!
Também aprenderemos como inserir uma string em widgets de Entry e Text! Finalmente veremos novos parâmetros que podemos fornecer ao método pack (fill e ipady)!
-
46Editor de Imagem de Produto [Parte 34 de 39]Vídeo Aula
Aqui vamos rever como obter a largura e a altura de um Frame. Também veremos Frames, Labels, Buttons, como carregar uma imagem em um Label, Frame propagate e pack expand. Haverá um problema inesperado também...
-
47Seleccionar Arquivo de Imagem [Parte 35 de 39]Vídeo Aula
Aqui vamos aprender como abrir uma janela selectora de arquivos!!! É chamado de filedialog! Veremos como definir seu título e como seleccionar apenas imagens!
-
48Actualizar Imagem do Produto [Parte 36 de 39]Vídeo Aula
Aqui vamos rever como definir uma imagem para uma Label!
-
49Processo de Salvar o Produto [Parte 37 de 39]Vídeo Aula
Aqui vamos aprender como fechar uma janela! Como obter valores dos widgets Entry, Text, Spinbox! E, finalmente, veremos uma solução para obter o caminho da imagem de uma Label!
-
50Funções para Actualizar e Inserir um Produto [Parte 38 de 39]Vídeo Aula
Aqui vamos criar duas funções no DataManager, uma para atualizar um produto e outra para inserir um novo produto no banco de dados!
-
51Método de Callback para Salvar o Produto [Parte 39 de 39]Vídeo Aula
Aqui veremos como fornecer ao ProductEditor um método da classe MyStockManager e, finalmente, juntaremos todas as peças que faltam!
-
52Gerar Arquivo EXE [Extra]Vídeo Aula
Aqui usaremos auto-py-to-exe para gerar um executável para nosso aplicativo!
Também aprenderemos como criar um ambiente virtual para Python.
-
53Introdução [Parte 0 de 8]Vídeo Aula
Aqui vamos ver as versões finais dos documentos PDF que iremos gerar.
-
54Criar Botão "Export PDF" (Um Produto) [Parte 1 de 8]Vídeo Aula
Aqui vamos criar um novo Frame na Janela do Editor do Produto, em seguida iremos inserir um Button para gerar um PDF com as informações do Produto.
-
55Definir Função para Gerar PDF (um Produto) [Parte 2 de 8]Vídeo Aula
Aqui vamos aprender como instalar o ReportLab e como usá-lo para gerar um PDF.
-
56Inserir Nome do Produto no PDF [Parte 3 de 8]Vídeo Aula
Aqui vamos aprender como desenhar uma String Centrada no PDF usando ReportLab. Também veremos como alterar a fonte e o tamanho da fonte!
-
57Inserir a Imagem do Produto no PDF [Parte 4 de 8]Vídeo Aula
Aqui vamos aprender como desenhar uma imagem no PDF usando ReportLab. Também aprenderemos como redimensionar a imagem e como manter sua proporção!
Sobre o texto, veremos como mudar sua cor!
(!) Nota: Para desenhar uma imagem em alguns casos é necessário instalar/actualizar o Pillow!
-
58Inserir Descrição do Produto no PDF [Parte 5 de 8]Vídeo Aula
Aqui adicionaremos a descrição de um Produto. Também aprenderemos que toda vez que definirmos uma fonte ou uma cor, o ReportLab a manterá como uma configuração global!
-
59Criar Botão "Export PDF" (Todos os Produtos) [Parte 6 de 8]Vídeo Aula
Aqui vamos adicionar um novo botão à janela principal!
-
60Definir Função para Gerar PDF (Todos os Produtos) [Parte 7 de 8]Vídeo Aula
Aqui vamos definir as principais ações de exportação de um PDF com todos os Produtos!
Adicionaremos uma função no DataManager para que possamos obter todos os Produtos de uma vez e definiremos uma função para gerar um arquivo PDF vazio!
-
61Inserir Várias Páginas de Produto no PDF [Parte 8 de 8]Vídeo Aula
Aqui veremos como reutilizar o código do PDF de um único produto e aprenderemos como criar várias páginas com o ReportLab.
-
62Gerar Arquivo EXE [Extra]Vídeo Aula
Aqui usaremos auto-py-to-exe para gerar um executável para nosso aplicativo!
-
63Introdução [Parte 0 de 7]Vídeo Aula
Aqui veremos como nosso aplicativo irá carregar a descrição usando imagens.
-
64Adicionar um Menu ao nosso Aplicativo [Parte 1 de 7]Vídeo Aula
Aqui vamos aprender como adicionar Menus ao nosso aplicativo. Vamos criar menus em cascata, adicionar comandos e separadores!
-
65Adicionar acções ao Menu [Parte 2 de 7]Vídeo Aula
Aqui adicionaremos ações a algumas opções do menu!
-
66Como funcionam as funções lambda? [Parte 3 de 7]Vídeo Aula
Aqui, revisaremos como uma função lambda realmente funciona em Python.
-
67Extrair texto de imagens com easyOCR [Parte 4 de 7]Vídeo Aula
Aqui vamos aprender sobre o easyOCR (easy Optical Character Recognition), um módulo de terceiros que nos ajudará a extrair texto de imagens!
-
68Porque nosso aplicativo congela? [Parte 5 de 7]Vídeo Aula
Aqui vamos entender porque nosso aplicativo começou a travar ao carregar texto de imagens!
Vamos rever conceitos como Processos, Threads (fios de execução), Main Thread (Thread principal), Event Notifier (Notificador de Eventos) and Event Queue (Fila de Eventos).
-
69Usando Threads (Solução 1) [Parte 6 de 7]Vídeo Aula
Aqui encontraremos uma solução simples, mas talvez não a melhor! Vamos aprender como criar um novo Thread (fio de execução) e delegar o trabalho de análise de imagem para ele!
-
70Usando Threads (Solução 2) [Parte 7 de 7]Vídeo Aula
Aqui vamos aprender que a solução anterior tem uma falha crítica!
Vamos implementar uma solução melhor!
-
71Introdução [Parte 0 de 8]Vídeo Aula
Aqui vamos ver a versão final dos documentos Docx que iremos gerar.
-
72Gerar um Arquivo Docx [Parte 1 de 8]Vídeo Aula
Aqui vamos instalar um módulo de terceiros chamado python-docx, vamos usá-lo para gerar arquivos docx.
-
73Adicionar Título, Imagem e Descrição ao Docx [Parte 2 de 8]Vídeo Aula
Aqui vamos nos guiar pela documentação do python-docx para que possamos adicionar o Título, a Imagem e a Descrição de um produto ao nosso arquivo Docx gerado!
-
74Centrar o Título [Parte 3 de 8]Vídeo Aula
Aqui vamos aprender como centrar o Título no documento. Para atingir nosso objetivo, usaremos as funções Python "type" e "dir" para inspecionar as variáveis. Também aproveitaremos o powershell para procurar uma string em vários arquivos.
-
75Aumentar o Tamanho da Fonte do Título [Parte 4 de 8]Vídeo Aula
Aqui iremos novamente inspecionar os elementos do python-docx para aprender como aumentar o tamanho da fonte. Também aprenderemos que o tamanho da fonte é especificado na unidade Pontos!
-
76Centrar a Imagem [Parte 5 de 8]Vídeo Aula
Aqui vamos investigar como podemos centralizar a imagem no Docx com python-docx.
-
77Formatar o Texto da Descrição [Parte 6 de 8]Vídeo Aula
Aqui vamos justificar, aumentar o tamanho da fonte e alterar o nome da fonte da descrição!
-
78Adicionar Opção para Gerar Docx ao Menu [Parte 7 de 8]Vídeo Aula
Aqui vamos rever como criar Menus no TkInter, como adicionar cascatas e comandos a eles!
-
79Gerar Docx através do App TkInter [Parte 8 de 8]Vídeo Aula
Aqui vamos adaptar o código de geração do Docx para ficar em uma função, assim poderemos chamá-lo no aplicativo TkInter quando selecionarmos a opção de gerar Arquivo Docx!