Interfaces Gráficas com Tkinter
O Tkinter é um wrapper do tcl/Tk, e acompanha a distribuição oficial do interpretador Python. É a biblioteca de UI de facto da linguagem Python.
Algumas das suas Vantages
- Portabilidade: Programas escritos usando o Tkinter são portáveis livremente entre Linux, Unix, Windows e Mac, além da garantia de que qualquer um poderá executar o programa sem precisar instalar bibliotecas extras.
- Aprendizagem: Tem uma API simples de se aprender e fácil de lembrar.
- Documentação: Muito bem documentada, com inúmeros tutoriais e referências de ótima qualidade disponíveis na web.
Algumas desvantagens, são:
- Limitada: Faltam muitos componentes importantes, como notebooks e combo box (apesar de estes poderem ser feitos combinando outros componentes). Alguns elementos (listbox, por exemplo) são incompletos ou limitados. Em compensação o componente
Text
é muito poderoso. - Aparência: A Tk usa uma função própria para acessar diretamente as funções do sistema operativo e desenhar os seus próprios elementos na tela. Isso tem a vantagem de ser mais facilmente portável, mas a grande desvantagem de ter uma aparência diferente da nativa do sistema operativo.
Exemplo de uso do Tkinter
from Tkinter import *
def resize(ev=None):
label.config(font='Helvetica -%d bold' %
scale.get())
top = Tk()
top.geometry('250x150')
label = Label(toptext='Hello World'font='Helvetica -12 bold')
label.pack(fill=Yexpand=1)
scale = Scale(topfrom_=10to=40,
orient=HORIZONTALcommand=resize)
scale.set(12)
scale.pack(fill=Xexpand=1)
quit = Button(toptext='QUIT'command=top.quitactiveforeground='white',
activebackground='red')
quit.pack()
mainloop()
Explicação do código
Importa-se o módulo a usar neste caso o Tkinter.
from Tkinter import *
Cria-se um objecto que é a janela principal da aplicação normalmente usa-se o nome top
para essa janela.
top = Tk()
top.geometry('250x150')
O objecto top
têm várias propriedades que podem ser lidas ou alteradas para configurar a janela.
Criação de um objecto do tipo Label
.
label = Label(toptext='Hello World'font='Helvetica -12 bold')
label.pack(fill=Yexpand=1)
Na função de inicialização do objecto passam-se alguns valores para o objecto e pode-se sempre ler ou alterar as propriedades como qualquer outro objecto... no Python é tudo objectos como métodos e propriedades.
Para gerir os eventos cria-se uma função com respectivos comandos... (def
serve para declarar funções ou métodos).
def resize(ev=None):
label.config(font='Helvetica -%d bold' %
scale.get())
Depois dá-se o nome dessa função ao comando de um objectoneste caso uma barra de escala...
scale = Scale(topfrom_=10to=40,
orient=HORIZONTALcommand=resize)
O evento é chamado com o parâmetro command e sempre que se activar o objecto scale (mexer na barra) é executado o evento resize. No evento resize é alterado o tamanho da fonte do objecto label.