
Aqui nós iremos ver:
O aspecto da Calculadora que será criada;
O que precisamos para começar.
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.
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.
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.
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.
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.
Aqui iremos aprender sobre regras de precedência de operadores.
Aqui iremos aprenderá como definir a estrutura base para criar uma árvore binária, as classes: Node e ExpressionTree.
Aqui iremos aprender como adicionar elementos à árvore binária. Além disso, iremos ver como ela será conectada com nossa calculadora!
É 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!
Aqui vamos resolver um pequeno problema, divisão por zero! Iremos aprender como aplicar lógica extra para melhorar a nossa calculadora.
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/
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!
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!
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.
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.
Aqui vamos aprender como obter o valor de um Entry e um Spinbox! Sobre o método pack usaremos o parâmetro padx!
Aqui vamos alterar o código para definir uma área específica de variáveis globais!
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!
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!
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!
Aqui vamos rever como criar Botões, Labels e como fazer pack lado a lado.
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!
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!!!
Aqui veremos como podemos expressar a ideia de um produto (Classe Produto) e como podemos gerenciar os dados (Classe DataManager).
Aqui vamos estruturar o código para dividir a tarefa de carregar as propriedades do produto em uma linha.
Aqui vamos rever como criar Frames, obter sua largura e altura, como criar Labels e definir sua fonte.
Aqui vamos aprender algo sobre Frames que não esperávamos!!
Veremos como usar frame.propagate(False) e também pack(expand= True).
Aqui vamos aprender como criar um botão de verificação e como ele funciona! Veremos as classes Checkbutton e BooleanVar.
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.
Aqui veremos como habilitar/desabilitar um Botão e também como alterar o texto de um Label!
Aqui vamos calcular o número total de páginas com a ajuda de math.ceil!
Aqui vamos refatorar alguns códigos e aprender como remover elementos de um Frame!
Aqui vamos começar a implementar o mecanismo de busca!
Aqui vamos implementar a filtragem dos dados para a ação de busca!
Aqui vamos limpar as entradas de pesquisa do Entry e do Spinbox!
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!
Aqui vamos resolver o bug sobre a lista de produtos a serem excluídos.
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!
Aqui vamos aprender como vincular uma ação ao evento de clique com o botão direito do mouse!
Aqui vamos aprender como criar uma nova janela! Chama-se Toplevel!! Também criaremos uma nova classe que representará o Editor de Produto!
Aqui vamos separar a janela Product Editor em três Frames. Vamos rever alguns dos conceitos que aprendemos antes.
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!
Aqui vamos aprender sobre um novo elemento, um novo widget!!! Chama-se LabelFrame!!!
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)!
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...
Aqui vamos aprender como abrir uma janela selectora de arquivos!!! É chamado de filedialog! Veremos como definir seu título e como seleccionar apenas imagens!
Aqui vamos rever como definir uma imagem para uma Label!
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!
Aqui vamos criar duas funções no DataManager, uma para atualizar um produto e outra para inserir um novo produto no banco de dados!
Aqui veremos como fornecer ao ProductEditor um método da classe MyStockManager e, finalmente, juntaremos todas as peças que faltam!
Aqui usaremos auto-py-to-exe para gerar um executável para nosso aplicativo!
Também aprenderemos como criar um ambiente virtual para Python.
Aqui vamos ver as versões finais dos documentos PDF que iremos gerar.
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.
Aqui vamos aprender como instalar o ReportLab e como usá-lo para gerar um PDF.
Aqui vamos aprender como desenhar uma String Centrada no PDF usando ReportLab. Também veremos como alterar a fonte e o tamanho da fonte!
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!
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!
Aqui vamos adicionar um novo botão à janela principal!
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!
Aqui veremos como reutilizar o código do PDF de um único produto e aprenderemos como criar várias páginas com o ReportLab.
Aqui usaremos auto-py-to-exe para gerar um executável para nosso aplicativo!
Aqui veremos como nosso aplicativo irá carregar a descrição usando imagens.
Aqui vamos aprender como adicionar Menus ao nosso aplicativo. Vamos criar menus em cascata, adicionar comandos e separadores!
Aqui adicionaremos ações a algumas opções do menu!
Aqui, revisaremos como uma função lambda realmente funciona em Python.
Aqui vamos aprender sobre o easyOCR (easy Optical Character Recognition), um módulo de terceiros que nos ajudará a extrair texto de imagens!
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).
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!
Aqui vamos aprender que a solução anterior tem uma falha crítica!
Vamos implementar uma solução melhor!
Aqui vamos ver a versão final dos documentos Docx que iremos gerar.
Aqui vamos instalar um módulo de terceiros chamado python-docx, vamos usá-lo para gerar arquivos docx.
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!
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.
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!
Aqui vamos investigar como podemos centralizar a imagem no Docx com python-docx.
Aqui vamos justificar, aumentar o tamanho da fonte e alterar o nome da fonte da descrição!
Aqui vamos rever como criar Menus no TkInter, como adicionar cascatas e comandos a eles!
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!
Aqui teremos uma visão geral sobre o novo docx com todos os produtos.
Aqui vamos criar um Button para a ação Export Docx!
Aqui vamos criar uma classe que estende a classe Toplevel para criar uma nova janela onde adicionaremos opções para nosso arquivo docx!
Aqui, revisaremos como criar Frames e aproveitaremos isso para separar a janela em duas áreas lógicas.
Aqui adicionaremos mais dois Frames ao Frame superior da janela para que possamos separar as opções de Tamanho do título das opções de Cor do título.
Aqui vamos construir o Frame Options Title Size, vamos usar e aprender como funcionam os Radio Buttons!
Também usaremos o parâmetro "anchor" no método pack!
Aqui vamos construir o conteúdo do Frame Options Title Color, vamos adicionar um label e usar e aprender como funciona um Combobox!
Aqui adicionaremos um botão ao Frame Button para que posteriormente possamos chamar a ação que irá gerar o documento docx.
Aqui vamos refatorar o docxGeneration.py para que funcione da mesma forma que temos em pdfGeneration.py!
Aqui continuamos a refatorar docxGeneration.py, vamos mover o código de generateProductDocx para generateProductPage.
Aqui vamos finalmente gerar um arquivo docx com todos os produtos!!!
Aqui resolvemos um pequeno bug que acontece quando listamos os produtos no documento docx!
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 :)