RadioButtons andam sempre em grupos. Só se pode apertar um.
O curioso é que, quando criamos a série de objetos, apenas a partir do segundo referenciamos um grupo, colocando o nome do primeiro.Parece confuso? Veja o exercício.
Dois objetos RadioButtons podem ser criados com, por exemplo:
self.rb1 = gtk.RadioButton(None, "UM DADO TÍTULO") self.rb2 = gtk.RadioButton(self.rb1, "OUTRO TÍTULO")
Para adicionar cada um desses objetos à tela do XO, numa dada posição, usamos normalmente um objeto Fixed (visto em aula anterior):
Os métodos de RadioButton são:
show()
hide()
destroy()
set_label(label)
Para trocar o título
get_label()
Retorna o título
set_active(bool)
Usamos True ou False para definir se o botãozinho aparece para baixo ou não. O uso desse método dispara um signal toggled - ver abaixo.
Como um botão, ele serve para disparar alguma ação. Como isso é feito? Já falamos isso quando tratamos do Button.
Colocamos a ação numa função que pode se chamar, por exemplo: talfunc. E existe um método que, a partir de algo que se fez com o botãozinho, dispara essa função. Esse "algo que se fez" é chamado de "signal". Os signals válidos são:
E o método é:
connect("signal", self.função, None)
DICA: O terceiro parâmetro desse método pode ser captado na função chamada, como podemos ver no exercício. Isso facilita a programação de botões.
No exercício dessa lição, o usuário tem a opção de selecionar UM (apenas UM) de vários nomes de Clubes. O selecionado aparece num Label. Se apertar outro, o nome é trocado.
Claro que o código a seguir, do exercício, tem que vir dentro de uma Classe etc. etc. como já mostramos.
#...
def __init__(self):
Activity.__init__(self)
#Definindo o tamanho das letras
gtk.settings_get_default().props.gtk_xft_dpi *= 3
#Criando base para layout
self.fix = gtk.Fixed()
self.add(self.fix)
self.fix.show()
#Criando Label
self.lb = gtk.Label()
self.fix.put(self.lb, 600,200)
self.lb.show()
#Criando RadioButtons
self.rb1 = gtk.RadioButton("Flamengo")
self.fix.put(self.rb1, 200,200)
self.rb1.show()
self.rb1.connect("toggled",self.apertado, "Flamengo")
self.rb2 = gtk.RadioButton("Santos")
self.fix.put(self.rb2, 200,300)
self.rb2.show()
self.rb2.connect("toggled",self.apertado, "Santos")
self.rb3 = gtk.RadioButton("Internacional")
self.fix.put(self.rb3, 200,400)
self.rb3.show()
self.rb3.connect("toggled",self.apertado, "Internacional")
def apertado(self,widget,data=None):
self.lb.set_text(data)
Repare que o parâmetro do connect veio como data.
LIÇÂO ANTERIOR PRÓXIMA LIÇÂO ÍNDICE HOMEPAGE