On Tue, Sep 09, 2003 at 05:40:16PM +0200, I�igo Serna wrote:
> > if not self.block_toggle:
> >
> > self.block_toggle = 1
> >
> > > self.toggle.set_active(self.opt)
> >
> > self.block_toggle = 0
> >
> > > print self.opt
> >
> > -- and the same code here
> >
> > > def onToggleToggled(self, toggle):
> > > print self.opt,
> > > if self.opt:
> > > self.opt = 0
> > > else:
> > > self.opt = 1
> > > self.label.set_text('Option: %d' % self.opt)
> >
> > if not self.block_toggle:
> >
> > self.block_toggle = 1
> >
> > > self.check.set_active(self.opt)
> >
> > self.block_toggle = 0
> >
>
> The problem comes because when self.toggle.set_active(self.opt) is
> executed in onCheckToggled method, self.opt value has already changed to
> the new value, but self.toggle.set_active(self.opt) calls
> onToggleToggled method, which changes self.opt a second time.
Elaborating on what I suggested (use connect_after(), too), something
like this perhaps?
def onCheckToggled(self, check):
# If the click started elsewhere, bail out
if self.toggling:
return
self.toggling = 1
self.opt = check.get_active()
# update friend
self.toggle.set_active(self.opt)
self.toggling = 0
def onToggleToggled(self, toggle):
if self.toggling:
return
self.toggling = 1
self.opt = toggle.get_active()
self.check.set_active(self.opt)
self.toggling = 0
This is not very PyGTK-related, and I don't guarantee it works ;-)
Take care,
--
Christian Reis, Senior Engineer, Async Open Source, Brazil.
http://async.com.br/~kiko/ | [+55 16] 261 2331 | NMFL
_______________________________________________
pygtk mailing list [EMAIL PROTECTED]
http://www.daa.com.au/mailman/listinfo/pygtk
Read the PyGTK FAQ: http://www.async.com.br/faq/pygtk/