lidar com RadioButton [RESOLVIDO]

1. lidar com RadioButton [RESOLVIDO]

rogerio machado
rogeriojlle

(usa OpenSuSE)

Enviado em 25/10/2010 - 14:51h

estou dando as primeiras engatinhadas com python/pygtk e até agora essa foi a minha primeira grande dúvida que o Google não me respondeu.

como lidar para "pegar" a opção escolhida num grupo de radiobutton's? pra mim está bem confusa a forma que encontrei nos diversos tutoriais que encontrei
Ok, ele funcionam, e se eu der ctrlC ctrlV deles no meu teste.py também deve funcionar, mas não é essa a idéia, e eu continuaria sem entender, talvez porque estou "martelando" de que a maneira correta é a que eu vou expor logo a seguir

Todos eles falam do evento "toggled" para cada botão ex:
radioButton.connect('toggled', funcaotal)

o negócio do primeiro botão também ser o grupo é novidade pra mim, mas já entendi
Mas isso obriga a ter uma mudança nessa parte do form, se a opção-padrão já estiver marcada, é quase certo que ninguem vai mexer lá e não haverá a captura da opção selecionada (pelo menos no meu entender)

não há um método em pygtk semelhante a isto?

sexo = gtk.RadioButton(None, 'Masculino')
sexoFem = gtk.RadioButton(sexo, 'Feminino')
btngravar = gtk.Button('Gravar')
btngravar.connect('clicked',enviaForm)

def enviaForm(self):
sexoSelecionado = sexo.get_BOTÃO_LIGADO()
......segue...


  


2. MELHOR RESPOSTA

3. Re: lidar com RadioButton [RESOLVIDO]

rogerio machado
rogeriojlle

(usa OpenSuSE)

Enviado em 25/10/2010 - 23:56h

pra não estender muito o texto, googlando descobri que vários widgets possuem uma propriedade chamada "state". Se fizer assim:

controle.get_state()
e
controle.state

é retornado o estado desse controle, no primeiro método ele retorna digamos que "por extenso" e na segunda forma um valor numérico.
foi só associar um com o outro.

o que nos interessa são os números:
1 - ACTIVE
2 - PRELIGHT

O estado ACTIVE está setado quando o controle está pré-selecionado quando cria, ou quando se marca a opção usando as setas, enquanto que o PRELIGHT é quando efetivamente se clicou em cima de um radiobutton, antes desativado

-------------------------------------------
def setSexo(self, letraSexo):
.... if self.state == 1 or self.state == 2:
........global sexoSelecionado
........sexoSelecionado = letraSexo

sexo = gtk.RadioButton(None, 'Masculino')
sexo.connect('toggled', setSexo, 'M')

# se ninguém mexer nos radiobutton, 'toggled'
# jamais acontecerá, então:
setSexo(sexo, 'M')
#isso executa a função ao menos uma vez

sexo = gtk.RadioButton(sexo, 'Feminino')
sexo.connect('toggled', setSexo, 'F')
-------------------------------------------

Pronto, agora enviaForm() já tem como saber qual opção está marcada através a variável 'sexoSelecionado'.


em tempo: dá errado se fizer '1 or 2' direto, porque não sei


4. Re: lidar com RadioButton [RESOLVIDO]

rogerio machado
rogeriojlle

(usa OpenSuSE)

Enviado em 26/10/2010 - 16:01h

botao.get_active() é bem mais claro de entender


5. Re: lidar com RadioButton [RESOLVIDO]

Anderson de Oliveira Madeira
enki

(usa Zenwalk)

Enviado em 27/10/2010 - 14:53h

Pois é, o get_active() é mais claro mesmo. Mas o que eu tava pensando era se existisse uma forma de obter o RadioButton ativo dado um grupo de RadioButtons, mas não achei tal forma na documentação. Se alguém conhecer um método parecido gostaria de saber.
Falow.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts