SlideShare a Scribd company logo
1 of 28
Palestra Tkinter - PUG-PI
III Encontro do Python User Group (PUG) do
Piauí
Palestra: Interface Gráfica com Tkinter
Palestrante: Marcos Castro
Objetivos
Objetivos da apresentação:
• Introdução ao Tkinter
• Conhecer algumas características do Tkinter
• Vantagens e desvantagens
• Desenvolver um programa usando Tkinter
O que vamos precisar?
• Python 2.7.3
• Algum editor (Ex.: Notepad++, Sublime Text 2)
O que é Tkinter?
Tkinter é uma biblioteca para interface gráfica.
Interface gráfica serve para que o usuário tenha
mais interatividade com o software.
Tkinter é padrão da linguagem Python. Ela é
baseada em Tcl (linguagem de programação
para scripts).
Usuários Windows
Para usuários Windows, o Tkinter já vem junto
ao instalador do Python!
Para testar, abra o cmd, digite python e faça:
• import Tkinter
• tk = Tkinter.Tk()
Irá exibir uma janela!
Execução
Usuários Linux
Você irá precisar fazer o download do Tkinter.
Abra o terminal e digite:
sudo apt-get install python-tk
Linux – Testando...
Vantagens
• Portabilidade – programas portáveis entre
Linux, Windows e Mac.
• É fácil de aprender, bom para iniciantes.
• Código limpo, boa documentação.
• Vai lhe ajudar quando você for aprender
interfaces gráficas mais robustas como PyGTK,
PyQt etc.
Desvantagens
• Poucos componentes gráficos, mas alguns
componentes podem ser feitos combinando
outros componentes.
• Aparência diferente da nativa do SO, mas é
uma boa interface.
• Desempenho.
Conceitos importantes
Widget é um componente de uma interface
gráfica.
Exemplos de widgets: botões, barras de
rolagem, janelas, menus etc.
Container é onde os widgets irão ficar.
Todo widget tem que está dentro de um
container!
Conceitos importantes
Gerenciadores de geometria
Servem para posicionar os widgets.
Se você não utilizar um gerenciador de
geometria, o widget não ficará visível ao usuário.
Você tem que indicar uma posição para o
widget!
O Tkinter possui 3 gerenciadores: pack, grid e
place.
Gerenciadores de geometria
pack: é o mais simples, fácil.
grid: coloca os seus widgets em posições
exatas. Um pouco mais complexo.
place: pouco utilizado, exige mais código.
Lei: não misture os gerenciadores de geometria!
Hello World
Botão e Evento de clique
Botão e Evento de clique
self.btn = Button(self.frame, text="botao")
self.btn = Button(self.frame)
self.btn["text"] = "botao"
Execução
pack
Lembra do pack ?
pack é um dos gerenciadores de geometria.
Você poderá utilizar o pack de várias maneiras.
Você pode por exemplo preencher
horizontalmente, alinhar um widget à esquerda
ou à direita etc.
pack e fill
Preenche horizontalmente:
self.btn = Button(self.frame)
self.btn.pack(fill=X)
Preenche verticalmente:
self.btn = Button(self.frame)
self.btn.pack(fill=Y)
pack e side
Serve para alinhar os widgets.
grid
grid é uma alternativa ao pack.
Utilizado em aplicações mais complexas,
fornece posições mais exatas.
row: a linha que o widget irá ficar
column: a coluna onde o widget irá ficar
grid - Exemplo 1
grid - Exemplo 2
grid - Exemplo 3
Colocando fonte no label
Exemplos de programas
Referências
http://effbot.org/tkinterbook/tkinter-index.htm
http://docs.python.org/2/library/tkinter.html

More Related Content

What's hot

Orientação a Objetos em Python
Orientação a Objetos em PythonOrientação a Objetos em Python
Orientação a Objetos em PythonLuciano Ramalho
 
tkinter final ppt.ppt
tkinter final ppt.ppttkinter final ppt.ppt
tkinter final ppt.pptKanuAgrawal2
 
Curso de HTML5 - Aula 01
Curso de HTML5 - Aula 01   Curso de HTML5 - Aula 01
Curso de HTML5 - Aula 01 Léo Dias
 
Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)Bruno Grange
 
Node.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo BranasNode.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo BranasRodrigo Branas
 
Aula de revisão de word
Aula de revisão de wordAula de revisão de word
Aula de revisão de wordDaniel da Silva
 
Aula 1 - Introdução a POO
Aula 1 -  Introdução a POOAula 1 -  Introdução a POO
Aula 1 - Introdução a POODaniel Brandão
 
Seminário - Linguagem Dart: Structured web apps
Seminário - Linguagem Dart: Structured web appsSeminário - Linguagem Dart: Structured web apps
Seminário - Linguagem Dart: Structured web appsGiancarlo Silva
 
Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)Adriano Teixeira de Souza
 
Lógica de Programação - Vetor
Lógica de Programação - VetorLógica de Programação - Vetor
Lógica de Programação - VetorWesley R. Bezerra
 
Criação de tabelas com HTML
Criação de tabelas com HTMLCriação de tabelas com HTML
Criação de tabelas com HTMLLeonardo Soares
 
Python e django na prática
Python e django na práticaPython e django na prática
Python e django na práticaRafael Cassau
 
Exercícios Photoshop 2
Exercícios Photoshop 2Exercícios Photoshop 2
Exercícios Photoshop 2João Leal
 
Introdução ao Android
Introdução ao AndroidIntrodução ao Android
Introdução ao AndroidJanynne Gomes
 
Desvendando a linguagem JavaScript
Desvendando a linguagem JavaScriptDesvendando a linguagem JavaScript
Desvendando a linguagem JavaScriptRodrigo Branas
 

What's hot (20)

Orientação a Objetos em Python
Orientação a Objetos em PythonOrientação a Objetos em Python
Orientação a Objetos em Python
 
tkinter final ppt.ppt
tkinter final ppt.ppttkinter final ppt.ppt
tkinter final ppt.ppt
 
Acessando o MySql com o Python
Acessando o MySql com o PythonAcessando o MySql com o Python
Acessando o MySql com o Python
 
Curso de HTML5 - Aula 01
Curso de HTML5 - Aula 01   Curso de HTML5 - Aula 01
Curso de HTML5 - Aula 01
 
Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)
 
Node.js e Express
Node.js e ExpressNode.js e Express
Node.js e Express
 
Node.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo BranasNode.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo Branas
 
Aula de revisão de word
Aula de revisão de wordAula de revisão de word
Aula de revisão de word
 
Aula 1 - Introdução a POO
Aula 1 -  Introdução a POOAula 1 -  Introdução a POO
Aula 1 - Introdução a POO
 
Seminário - Linguagem Dart: Structured web apps
Seminário - Linguagem Dart: Structured web appsSeminário - Linguagem Dart: Structured web apps
Seminário - Linguagem Dart: Structured web apps
 
Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)
 
Lógica de Programação - Vetor
Lógica de Programação - VetorLógica de Programação - Vetor
Lógica de Programação - Vetor
 
Criação de tabelas com HTML
Criação de tabelas com HTMLCriação de tabelas com HTML
Criação de tabelas com HTML
 
Python e django na prática
Python e django na práticaPython e django na prática
Python e django na prática
 
Exercícios Photoshop 2
Exercícios Photoshop 2Exercícios Photoshop 2
Exercícios Photoshop 2
 
POO - 16 - Polimorfismo
POO - 16 - PolimorfismoPOO - 16 - Polimorfismo
POO - 16 - Polimorfismo
 
Manual de kodu
Manual de koduManual de kodu
Manual de kodu
 
Introdução ao Android
Introdução ao AndroidIntrodução ao Android
Introdução ao Android
 
Introdução ao HTML
Introdução ao HTMLIntrodução ao HTML
Introdução ao HTML
 
Desvendando a linguagem JavaScript
Desvendando a linguagem JavaScriptDesvendando a linguagem JavaScript
Desvendando a linguagem JavaScript
 

Viewers also liked (13)

Daniel 6
Daniel 6Daniel 6
Daniel 6
 
Logica programacao python-slides
Logica programacao python-slidesLogica programacao python-slides
Logica programacao python-slides
 
Daniel 10
Daniel 10Daniel 10
Daniel 10
 
“Anunciando a Palavra – O ministério da evangelização"
“Anunciando a Palavra – O ministério da evangelização"“Anunciando a Palavra – O ministério da evangelização"
“Anunciando a Palavra – O ministério da evangelização"
 
Formação mp escola de servos
Formação mp escola de servosFormação mp escola de servos
Formação mp escola de servos
 
REFLEXÕES E INFORMAÇÕES
REFLEXÕES E INFORMAÇÕESREFLEXÕES E INFORMAÇÕES
REFLEXÕES E INFORMAÇÕES
 
Daniel 7
Daniel 7Daniel 7
Daniel 7
 
Daniel 2
Daniel 2Daniel 2
Daniel 2
 
Daniel 9
Daniel 9Daniel 9
Daniel 9
 
Daniel 5
Daniel 5Daniel 5
Daniel 5
 
Daniel 4
Daniel 4Daniel 4
Daniel 4
 
Daniel 1
Daniel 1Daniel 1
Daniel 1
 
Daniel 3
Daniel 3Daniel 3
Daniel 3
 

Similar to Tkinter - Interface gráfica com Python

Palestra sobre tkinter
Palestra sobre tkinterPalestra sobre tkinter
Palestra sobre tkinterMarcos Castro
 
Android bootcamp 06-01-2012 Part 1
Android bootcamp  06-01-2012 Part 1Android bootcamp  06-01-2012 Part 1
Android bootcamp 06-01-2012 Part 1Inael Rodrigues
 
Curso python
Curso pythonCurso python
Curso pythonTiago
 
Java - Gestão de componentes curso profissional
Java - Gestão de componentes curso profissionalJava - Gestão de componentes curso profissional
Java - Gestão de componentes curso profissionala41172
 
Desenvolvimento orientado a objetos com C++ e QT4 - Henrique Marks
Desenvolvimento orientado a objetos com C++ e QT4 - Henrique MarksDesenvolvimento orientado a objetos com C++ e QT4 - Henrique Marks
Desenvolvimento orientado a objetos com C++ e QT4 - Henrique MarksTchelinux
 
Sistema operativo em ambiente gráfico
Sistema operativo em ambiente gráficoSistema operativo em ambiente gráfico
Sistema operativo em ambiente gráficomarie1961
 
c-gui-programming-with-qt-4-2ndedition -Cap1e2
c-gui-programming-with-qt-4-2ndedition -Cap1e2c-gui-programming-with-qt-4-2ndedition -Cap1e2
c-gui-programming-with-qt-4-2ndedition -Cap1e2Cedemir Pereira
 
FLTK Summer Course - Part I - First Impact
FLTK Summer Course - Part I - First ImpactFLTK Summer Course - Part I - First Impact
FLTK Summer Course - Part I - First ImpactMichel Alves
 
Projeto para a faculdade? Canivete Python resolve!
Projeto para a faculdade? Canivete Python resolve!Projeto para a faculdade? Canivete Python resolve!
Projeto para a faculdade? Canivete Python resolve!Guilherme Medeiros
 
Apostila:Curso de java II
Apostila:Curso de java II  Apostila:Curso de java II
Apostila:Curso de java II Verônica Veiga
 
Programação avançada
Programação avançada Programação avançada
Programação avançada Ilídio Costa
 
Introdução ao desenvolvimento de aplicativos com interface gráfica
Introdução ao desenvolvimento de aplicativos com interface gráficaIntrodução ao desenvolvimento de aplicativos com interface gráfica
Introdução ao desenvolvimento de aplicativos com interface gráficaArtur Barreto
 
Ficha de trabalho_so_4_m4_-_personalizacao_ambiente_grafico_linux
Ficha de trabalho_so_4_m4_-_personalizacao_ambiente_grafico_linuxFicha de trabalho_so_4_m4_-_personalizacao_ambiente_grafico_linux
Ficha de trabalho_so_4_m4_-_personalizacao_ambiente_grafico_linuxomaildoruifilipe
 

Similar to Tkinter - Interface gráfica com Python (20)

Palestra sobre tkinter
Palestra sobre tkinterPalestra sobre tkinter
Palestra sobre tkinter
 
Android bootcamp 06-01-2012 Part 1
Android bootcamp  06-01-2012 Part 1Android bootcamp  06-01-2012 Part 1
Android bootcamp 06-01-2012 Part 1
 
Curso python
Curso pythonCurso python
Curso python
 
Introdução ao qt
Introdução ao qtIntrodução ao qt
Introdução ao qt
 
Java - Gestão de componentes curso profissional
Java - Gestão de componentes curso profissionalJava - Gestão de componentes curso profissional
Java - Gestão de componentes curso profissional
 
Desenvolvimento orientado a objetos com C++ e QT4 - Henrique Marks
Desenvolvimento orientado a objetos com C++ e QT4 - Henrique MarksDesenvolvimento orientado a objetos com C++ e QT4 - Henrique Marks
Desenvolvimento orientado a objetos com C++ e QT4 - Henrique Marks
 
Sistema operativo em ambiente gráfico
Sistema operativo em ambiente gráficoSistema operativo em ambiente gráfico
Sistema operativo em ambiente gráfico
 
Apresentação QtConBr
Apresentação QtConBrApresentação QtConBr
Apresentação QtConBr
 
c-gui-programming-with-qt-4-2ndedition -Cap1e2
c-gui-programming-with-qt-4-2ndedition -Cap1e2c-gui-programming-with-qt-4-2ndedition -Cap1e2
c-gui-programming-with-qt-4-2ndedition -Cap1e2
 
Estudo tic u2
Estudo tic u2Estudo tic u2
Estudo tic u2
 
Rqt3
Rqt3Rqt3
Rqt3
 
FLTK Summer Course - Part I - First Impact
FLTK Summer Course - Part I - First ImpactFLTK Summer Course - Part I - First Impact
FLTK Summer Course - Part I - First Impact
 
Como Implementar Um Menu Ribbon em C#
Como Implementar Um Menu Ribbon em C#Como Implementar Um Menu Ribbon em C#
Como Implementar Um Menu Ribbon em C#
 
Projeto para a faculdade? Canivete Python resolve!
Projeto para a faculdade? Canivete Python resolve!Projeto para a faculdade? Canivete Python resolve!
Projeto para a faculdade? Canivete Python resolve!
 
Apostila:Curso de java II
Apostila:Curso de java II  Apostila:Curso de java II
Apostila:Curso de java II
 
CURSO JAVA 02
CURSO JAVA 02CURSO JAVA 02
CURSO JAVA 02
 
Programação avançada
Programação avançada Programação avançada
Programação avançada
 
Introdução ao desenvolvimento de aplicativos com interface gráfica
Introdução ao desenvolvimento de aplicativos com interface gráficaIntrodução ao desenvolvimento de aplicativos com interface gráfica
Introdução ao desenvolvimento de aplicativos com interface gráfica
 
Apostila_IC.pdf
Apostila_IC.pdfApostila_IC.pdf
Apostila_IC.pdf
 
Ficha de trabalho_so_4_m4_-_personalizacao_ambiente_grafico_linux
Ficha de trabalho_so_4_m4_-_personalizacao_ambiente_grafico_linuxFicha de trabalho_so_4_m4_-_personalizacao_ambiente_grafico_linux
Ficha de trabalho_so_4_m4_-_personalizacao_ambiente_grafico_linux
 

More from Marcos Castro

Árvores de Decisão
Árvores de DecisãoÁrvores de Decisão
Árvores de DecisãoMarcos Castro
 
Colored de Bruijn Graphs
Colored de Bruijn GraphsColored de Bruijn Graphs
Colored de Bruijn GraphsMarcos Castro
 
Maratona de Programação
Maratona de ProgramaçãoMaratona de Programação
Maratona de ProgramaçãoMarcos Castro
 
Ferramentas para Bioinformática
Ferramentas para BioinformáticaFerramentas para Bioinformática
Ferramentas para BioinformáticaMarcos Castro
 
A importância da Bioinformática
A importância da BioinformáticaA importância da Bioinformática
A importância da BioinformáticaMarcos Castro
 
Redes Neurais Artificiais
Redes Neurais ArtificiaisRedes Neurais Artificiais
Redes Neurais ArtificiaisMarcos Castro
 
Problema do Caixeiro Viajante
Problema do Caixeiro ViajanteProblema do Caixeiro Viajante
Problema do Caixeiro ViajanteMarcos Castro
 
Metaheurística Simulated Annealing
Metaheurística Simulated AnnealingMetaheurística Simulated Annealing
Metaheurística Simulated AnnealingMarcos Castro
 
Expressões Regulares com Python 3
Expressões Regulares com Python 3Expressões Regulares com Python 3
Expressões Regulares com Python 3Marcos Castro
 
Programação dinâmica
Programação dinâmicaProgramação dinâmica
Programação dinâmicaMarcos Castro
 
Busca em largura - BFS
Busca em largura - BFSBusca em largura - BFS
Busca em largura - BFSMarcos Castro
 
Análise Assintótica
Análise AssintóticaAnálise Assintótica
Análise AssintóticaMarcos Castro
 
Listas, tuplas, conjuntos e dicionários
Listas, tuplas, conjuntos e dicionáriosListas, tuplas, conjuntos e dicionários
Listas, tuplas, conjuntos e dicionáriosMarcos Castro
 
Python - Dicionários
Python - DicionáriosPython - Dicionários
Python - DicionáriosMarcos Castro
 

More from Marcos Castro (20)

Árvores de Decisão
Árvores de DecisãoÁrvores de Decisão
Árvores de Decisão
 
Colored de Bruijn Graphs
Colored de Bruijn GraphsColored de Bruijn Graphs
Colored de Bruijn Graphs
 
Maratona de Programação
Maratona de ProgramaçãoMaratona de Programação
Maratona de Programação
 
Bioinformática
BioinformáticaBioinformática
Bioinformática
 
Arquivos FASTQ
Arquivos FASTQArquivos FASTQ
Arquivos FASTQ
 
Ferramentas para Bioinformática
Ferramentas para BioinformáticaFerramentas para Bioinformática
Ferramentas para Bioinformática
 
A importância da Bioinformática
A importância da BioinformáticaA importância da Bioinformática
A importância da Bioinformática
 
Bioinformática
BioinformáticaBioinformática
Bioinformática
 
Redes Neurais Artificiais
Redes Neurais ArtificiaisRedes Neurais Artificiais
Redes Neurais Artificiais
 
Problema do Caixeiro Viajante
Problema do Caixeiro ViajanteProblema do Caixeiro Viajante
Problema do Caixeiro Viajante
 
Metaheurística Simulated Annealing
Metaheurística Simulated AnnealingMetaheurística Simulated Annealing
Metaheurística Simulated Annealing
 
Expressões Regulares com Python 3
Expressões Regulares com Python 3Expressões Regulares com Python 3
Expressões Regulares com Python 3
 
Algoritmos gulosos
Algoritmos gulososAlgoritmos gulosos
Algoritmos gulosos
 
Programação dinâmica
Programação dinâmicaProgramação dinâmica
Programação dinâmica
 
Busca em largura - BFS
Busca em largura - BFSBusca em largura - BFS
Busca em largura - BFS
 
Análise Assintótica
Análise AssintóticaAnálise Assintótica
Análise Assintótica
 
Listas, tuplas, conjuntos e dicionários
Listas, tuplas, conjuntos e dicionáriosListas, tuplas, conjuntos e dicionários
Listas, tuplas, conjuntos e dicionários
 
Python - Set
Python - SetPython - Set
Python - Set
 
Python - Dicionários
Python - DicionáriosPython - Dicionários
Python - Dicionários
 
Tabela Hash
Tabela HashTabela Hash
Tabela Hash
 

Tkinter - Interface gráfica com Python