pygi como ativar o botão sem executar a função

1

Estou escrevendo este aplicativo usando rapidamente.

Estou procurando uma maneira de alternar o botão sem executar a função que está conectada a este botão.

def on_button_text_italic_toggled(self, widget):
    print "Italic"

def on_buttone_test_clicked(self, widget):
    self.button_text_italic.set_active(True)

Então, preciso que isso faça com que button_text_italic seja alternado, mas sem imprimir o texto "Itálico".

Obrigado por qualquer ajuda!

    
por Majster-pl 11.04.2013 / 23:24

2 respostas

3

Se você quiser que a função seja executada na maior parte do tempo, o sinal de alternância é emitido, e não quando você alterna manualmente (por exemplo, ao carregar configurações salvas e exibir o estado apropriado), então você precisa bloquear e desbloquear o sinal . Para fazer isso, você precisará do handle_id que foi retornado quando o sinal foi conectado à função. Apenas atribua uma variável quando você conectar o sinal. Aqui está um exemplo:

#!/usr/bin/python
from gi.repository import Gtk

def on_toggle(widget,data=None):
    print "toggled, emitted signal"

def on_button1_clicked(widget, data=None):
    print "manually toggle, no signal"
    toggle.handler_block(handle_id)
    state=toggle.get_active()
    toggle.set_active(not state)
    toggle.handler_unblock(handle_id)


win=Gtk.Window()
win.connect('destroy', Gtk.main_quit)
box=Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
button1=Gtk.Button('Toggle with no signal')
button1.connect('clicked', on_button1_clicked)
button1.show()
box.pack_start(button1,True,True,10)
toggle=Gtk.ToggleButton('Toggle')
handle_id=toggle.connect('toggled', on_toggle)
toggle.show()
box.pack_start(toggle,True,True,0)
box.show_all()
win.add(box)
win.show()
Gtk.main()
    
por Ian B. 12.04.2013 / 03:28
0

on_button_text_italic_toggled é um método de objeto que é invocado quando o on_buttone_test_clicked é chamado, então é natural executar o código especificado.

Você terá que substituir a linha print "Itallic" por pass uma palavra-chave do Python, mas isso deixa você com o on_button_text_italic_toggled sem fazer nada, então você pode não querer chamá-lo.

Você pode aprender mais sobre as funções aqui e como definir classes e métodos aqui

    
por Stef K 11.04.2013 / 23:40