RadioButton
Em computação, um botão de opção ou botão de rádio (Radiobutton) é um elemento de interface gráfica (isto é um componente widget) com dois estados: selecionado (ativado) e não-selecionado (desativado), quando o usuário pressiona um botão do mouse ou uma tecla como Espaço. Botões de opção são usados num grupo para apresentar um conjunto limitado de escolhas (duas ou mais) que são mutuamente exclusivas. Deste maneira, quando o usuário seleciona um outro botão no mesmo conjunto, o outro botão já selecionado torna-se automaticamente desativado.
Grid
É o gerente de geometria de grade coloca os widgets em uma tabela bi-dimensional. O Widget mestre é dividido em um número de linhas e colunas, e cada “célula” na tabela resultante pode conter um widget.
Utilizar o gerenciador de grade é fácil. Basta criar os widgets, e usar o método grade para dizer ao gerente em que linha e coluna quer os colocar. Você não tem que especificar o tamanho da grade de antemão, o gerente determina automaticamente que a partir dos widgets na mesma. Linhas e colunas vazias são ignoradas.
Sticky
Os widgets são centrados em suas células. Você pode usar a opção Sticky para mudar isso, esta opção tem um ou mais valores do conjunto N, S, E, W. Para alinhar os rótulos para a borda esquerda, direita, cima e baixo.
ColumnSpan e Rowspan
Os widgets podem abranger mais de um célula. A opção ColumnSpan é usada para permitir que um Widget alcance mais de uma coluna, e a opção rowspan deixa abranger mais de uma linha.
Exemplo:
Neste exemplo criamos um grupo de botões de radio que efetua as 4 operações básicas da matemática, usando o evento de item e a verificação do seu estado. Você deve obter um programa Linux como na imagem acima.
Python
#!/usr/bin/env python # -*- coding: latin-1 -*- # Desenvolvimento Aberto # Radiobutton.py # importa modulo from Tkinter import * # Cria formulario formulario = Tk() formulario.title = "Desenvolvimento Aberto" # Evento CB on click def evento1(): if (r1.get() == 1): texto.insert(END,"Somar:\n") def evento2(): if (r1.get() == 2): texto.insert(END,"Subtrair:\n") def evento3(): if (r1.get() == 3): texto.insert(END,"Multiplicar:\n") def evento4(): if (r1.get() == 4): texto.insert(END,"Dividir:\n") # Evento do botão def callback(): if (r1.get() == 1): n1 = float(campo1.get()) n2 = float(campo2.get()) total = n1 + n2 texto.insert(END, campo1.get() + " + " + campo2.get() + " = " + str(total) + "\n") if (r1.get() == 2): n1 = float(campo1.get()) n2 = float(campo2.get()) total = n1 - n2 texto.insert(END, campo1.get() + " - " + campo2.get() + " = " + str(total) + "\n") if (r1.get() == 3): n1 = float(campo1.get()) n2 = float(campo2.get()) total = n1 * n2 texto.insert(END, campo1.get() + " * " + campo2.get() + " = " + str(total) + "\n") if (r1.get() == 4): n1 = float(campo1.get()) n2 = float(campo2.get()) total = n1 / n2 texto.insert(END, campo1.get() + " / " + campo2.get() + " = " + str(total) + "\n") # Define variavel para status do RadioButton r1 = IntVar() # Cria um novo label rotulo = Label(formulario, text = "Escolha uma Opcao") # Identa linhas usando o caracter continuacao de linua # Cria os Componentes opc1 = Radiobutton(formulario, text = "Somar", variable = r1, value =1, command = evento1) opc2 = Radiobutton(formulario, text = "Subtrair", variable = r1, value = 2, command = evento2) opc3 = Radiobutton(formulario, text = "Multiplicar", variable = r1, value =3, command = evento3) opc4 = Radiobutton(formulario, text = "Dividir", variable = r1, value = 4, command = evento4) rotulo1 = Label(formulario, text = "Numero 1:") rotulo2 = Label(formulario, text = "Numero 2:") campo1 = Entry(formulario) campo2 = Entry(formulario) botao = Button(formulario, text="Ok", command = callback) texto = Text(formulario, height = 10, width = 50) # Adiciona Componentes no Grid rotulo.grid(sticky=W) opc1.grid(row=1, sticky=W) opc2.grid(row=2, sticky=W) opc3.grid(row=3, sticky=W) opc4.grid(row=4, sticky=W) rotulo1.grid(row=5,sticky=W) campo1.grid(row=5, columnspan=2) rotulo2.grid(row=6,sticky=W) campo2.grid(row=6, columnspan =2) botao.grid(row=6, columnspan= 3, sticky=E) texto.grid(row=7) # Roda o loop principal do tcl mainloop()