Ler este conteúdo em PDF: Apostila Python Progressivo
Botões de Rádio: Radio Button
Ou seja, dizemos que um botão de rádio é mutuamente exclusivo: só pode marcar uma opção e apenas uma, nada mais nem nada menos que uma.
Eles são bem úteis quando o programa deseja saber o que o usuário quer fazer, deixando ele escolher apenas uma opção.
RadioButton - Como usar em Python
Para criarmos um grupo de radio buttons em Python, devemos fazer duas coisas:Criar os botões, onde cada um é objeto da classe Radiobutton
Um objeto da classe IntVar, que vai armazenar o valor do botão selecionado
Para criar um objeto da classe Radiobutton, passamos como argumento:
- O container onde o botão de rádio vai (geralmente um frame)
- text - variável que armazena a string que vai aparecer ao lado do botão de rádio
- variable - nome da variável, que é um objeto da classe tipo IntVar
- value - valor inteiro, onde cada opção deve corresponder a um número diferente
Pegamos o valor selecionado através do método get() de objetos da classe IntVar.
Vamos ver um exemplo real, funcionando e acontecendo, para entender melhor ?
Exemplo de uso de um Radiobutton
Vamos criar um programa que vai ter a seguinte 'cara':Primeiro, criamos nossa janela_principal, depois dois frames: frame_cima e o frame_baixo.
No frame de cima, vamos colocar o label e os botões de rádio.
No frame de baixo, vão os botões Exibe e Sair.
Depois, criamos o objeto radio_valor, da classe IntVar, que vai armazenar o valor do botão de rádio selecionado. Inicialmente setamos ele como 1, para aparecer marcado a opção de valor 1.
Em seguida criamos o label "Qual melhor curso?".
Depois, os três Radiobutton. Vamos colocar todos no frame_cima, todos vão usar a variável radio_valor e cada um tem um número inteiro diferente, de 1 até 3, para sabermos qual valor foi marcado.
Empacotamos o label e os botões no frame de cima.
Depois criamos os botões Exibe e o Sair. O exibe pega o valor assinalado (que está no método get() do objeto radio_valor da classe VarInt) e exibe a opção que escolhemos.
Veja como ficou nosso código Python:
from tkinter import * from tkinter import messagebox class MinhaGUI: def __init__(self): # Cria janela principal self.janela_principal = Tk() # Cria dois frames self.frame_cima = Frame(self.janela_principal) self.frame_baixo = Frame(self.janela_principal) # Objeto IntVar dos botões self.radio_valor = IntVar() self.radio_valor.set(1) # Para a primeira opção ficar marcada # Criando os radio buttons e o label self.label = Label(self.frame_cima, text='Qual o melhor curso?') self.python = Radiobutton(self.frame_cima, text='Python Progressivo', \ variable = self.radio_valor, value=1) self.java = Radiobutton(self.frame_cima, text='Java Progressivo', \ variable = self.radio_valor, value=2) self.c = Radiobutton(self.frame_cima, text='C Progressivo', \ variable = self.radio_valor, value=3) # Empacotando o label e os radio buttons self.label.pack(anchor = 'w') self.python.pack(anchor = 'w') self.java.pack(anchor = 'w') self.c.pack(anchor = 'w') # Criando os botões self.botao = Button(self.frame_baixo, text='Exibe', command=self.exibe) self.botao_sair = Button(self.frame_baixo, text='Sair', command=self.janela_principal.quit) # Empacotando botões self.botao.pack(side='left') self.botao_sair.pack(side='left') # Empacotando os frames na janela principal self.frame_cima.pack() self.frame_baixo.pack() # Rodando mainloop() def exibe(self): nome = str(self.radio_valor.get()) messagebox.showinfo('Resposta','Você escolheu a opçao ' + nome) gui = MinhaGUI()
Chamando Métodos sem Botão
Se você puxar pela memória, vai se lembrar que muitas vezes nem precisar clicar em um botão, para o programa tomar alguma ação, basta selecionar um dos botões de rádio e algo já acontece.Para fazer isso, basta adicionar o parâmetro command ao criar um objeto da classe Radiobutton com o nome do método que você deseja que seja executado.
Veja como fica nosso programa sem o uso de botões:
from tkinter import * from tkinter import messagebox class MinhaGUI: def __init__(self): # Cria janela principal self.janela_principal = Tk() # Criando o frame self.frame_cima = Frame(self.janela_principal) # Objeto IntVar dos botões self.radio_valor = IntVar() self.radio_valor.set(1) # Para a primeira opção ficar marcada # Criando os radio buttons e o label self.label = Label(self.frame_cima, text='Qual o melhor curso?') self.python = Radiobutton(self.frame_cima, text='Python Progressivo', \ variable = self.radio_valor, value=1, command=self.exibe) self.java = Radiobutton(self.frame_cima, text='Java Progressivo', \ variable = self.radio_valor, value=2, command=self.exibe) self.c = Radiobutton(self.frame_cima, text='C Progressivo', \ variable = self.radio_valor, value=3, command=self.exibe) # Empacotando o label e os radio buttons self.label.pack(anchor = 'w') self.python.pack(anchor = 'w') self.java.pack(anchor = 'w') self.c.pack(anchor = 'w') # Empacotando o frame na janela principal self.frame_cima.pack() # Rodando mainloop() def exibe(self): nome = str(self.radio_valor.get()) messagebox.showinfo('Resposta','Você escolheu a opçao ' + nome) gui = MinhaGUI()
estou aqui no ano de 2021,tentando criar um projeto de iniciante usando a ferramenta dos radiobuttons no python,já usei anteriormente em HTML mas percebi que são coisas totalmente diferentes,será que alguem poderia me ajudar?
ResponderExcluir