Ferramentas de Site


dev_geral:python:gui_em_tkinter

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 operacional e desenhar 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 operacional.

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 varias 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.


Tópico de discussão no fórum: Programar ambientes gráficos em Tkinter
dev_geral/python/gui_em_tkinter.txt · Última modificação em: 2021/12/12 01:16 por staff