Ir para o conteúdo

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.