Enviar um café pro programador

Label em GUI - Exibindo um texto

Neste tutorial, vamos aprender a usar o widget do tipo Label, para exibir textos em interfaces gráficas em Python.


Como Exibir um Texto - Label


Agora que já estudamos um pouco de GUI e o módulo Tkinter do Python, vamos aprender a usar o widget mais simples e fácil de todos o Label, que serve para exibir um simples texto.

Para exibir um simples texto, vamos usar a função Label() do módulo tkinter.

O primeiro argumento tem que ser a janela (main_window, do tipo Tk() ) onde o label vai ficar e o segundo argumento é a variável text com a string que queremos exibir.

Vamos salvar esse Label na variável texto.
Depois, invocamos o método pack() da Label(), para posicionar e exibir o label na janela.
Por fim, chamamos a mainloop() para exibir nossa janela.

Nosso código fica:

import tkinter

class MinhaGUI:
 def __init__(self):
  # Criando a janela principal
  self.main_window = tkinter.Tk()
  
  # Criando um Label com o texto 'Curso Python Progressivo'
  self.texto = tkinter.Label(self.main_window, text='Curso Python Progressivo! ' )

  # Chamando o metodo pack() da função Label()
  self.texto.pack()

  # Fazer o Tkinter exibir o looping da janela
  tkinter.mainloop()

minha_gui = MinhaGUI()


O resultado é a janela com o rótulo (label):
Como exibir um texto em GUI Python

O método pack() e o argumento side

Se você maximizar a janela que vai abrir, vai perceber que a linha de texto fica bem lá em cima, e no centro. Esse é o padrão, mas podemos mudar isso através do método pack() que recebe o argumento side com as seguintes opções:
  1. side='left'
  2. side='right'
  3. side='bottom'
  4. side='top'

Por exemplo, vamos criar um novo label na variável label2 e chamar de label1 a primeira, que exibimos a string 'Curso Python Progressivo!'

Vamos fazer com que label1 fique no topo e label2 fique sempre lá embaixo, basta usar o argumento side no método pack(), veja como fica o código:

import tkinter

class MinhaGUI:
 def __init__(self):
  # Criando a janela principal
  self.main_window = tkinter.Tk()
  
  # Criando os labels
  self.label1 = tkinter.Label(self.main_window, text='Curso Python Progressivo!' )
  self.label2 = tkinter.Label(self.main_window, text='www.pythonprogressivo.net' )

  # Exibindo os labels
  self.label1.pack(side='top')
  self.label2.pack(side='bottom')

  # Fazer o Tkinter exibir o looping da janela
  tkinter.mainloop()

minha_gui = MinhaGUI()



E o resultado:

GUI - Python - Label - Rótulo


Note que você pode maximizar, diminuir ou aumentar a janela, mas o label1 fica sempre lá em cima e o label2 fica sempre lá embaixo, quem 'cuida' disso é o método pack().

Bacana, não é?

A Função Label() e seus Parâmetros

Existem outros parâmetros para passarmos para a função Label além da janela principal o text com a string a ser exibida.

Por exemplo, o parâmetro bg recebe a cor de background (plano de fundo).
O parâmetro fg, recebe a cor da fonte.

O seguinte código:

import tkinter

class MinhaGUI:
 def __init__(self):
  # Criando a janela principal
  self.main_window = tkinter.Tk()
  
  # Criando a label Ceará e exibindo
  self.label = tkinter.Label(self.main_window, text="Ceará", bg="black", fg="white")
  self.label.pack(fill = tkinter.X)
  
  # Criando a label Flamengo e exibindo
  self.label = tkinter.Label(self.main_window, text="Flamengo", bg="red", fg="black")
  self.label.pack(fill = tkinter.X)
  
  # Criando a label Palmeiras e exibindo
  self.label = tkinter.Label(self.main_window, text="Palmeiras", bg="green", fg="black")
  self.label.pack(fill = tkinter.X)

  # Fazer o Tkinter exibir o looping da janela
  tkinter.mainloop()

minha_gui = MinhaGUI()


Tem o seguinte resultado:

Apostila de Python para download

O parâmetro fill é de preenchimento, usamos tkinter.X para expandir (expand) e ocupar toda a tela.
Entenderam a lógica da coisa?

Cria uma janela (main_window ou qualquer nome que queira), é uma instância de Tk()
Cria os label com a função Label e depois exibe com a pack().
Por fim, chama a mainloop() pra a exibição continuar pra sempre, até você clicar em fechar.

Para exibir os labels lado a lado, usamos side='left' e para preencher verticalmente, usamos fill=tkinter.Y:

import tkinter

class MinhaGUI:
 def __init__(self):
  # Criando a janela principal
  self.main_window = tkinter.Tk()
  
  # Criando a label Ceará e exibindo
  self.label = tkinter.Label(self.main_window, text="Ceará", bg="black", fg="white")
  self.label.pack(fill = tkinter.Y, side='left')
  
  # Criando a label Flamengo e exibindo
  self.label = tkinter.Label(self.main_window, text="Flamengo", bg="red", fg="black")
  self.label.pack(fill = tkinter.Y, side='left')
  
  # Criando a label Palmeiras e exibindo
  self.label = tkinter.Label(self.main_window, text="Palmeiras", bg="green", fg="black")
  self.label.pack(fill = tkinter.Y, side='left')

  # Fazer o Tkinter exibir o looping da janela
  tkinter.mainloop()

minha_gui = MinhaGUI()


Resultado:

Tutorial de Python

Um comentário: