[pygtk] synchronizing HPaned widgets
Stephen Langer
stephen.langer at nist.gov
Fri Feb 6 05:34:48 WST 2009
On Feb 5, 2009, at 3:15 PM, John Finlay wrote:
> Stephen Langer wrote:
>> Hi --
>>
>> I'm hoping that someone can tell me if this is a bug or if I'm
>> doing something wrong.
>>
>> I have two HPaned widgets whose separators I'd like to keep
>> synchronized. Both Paneds are in the same VBox, so they have the
>> same width.
>>
>> As described at http://faq.pygtk.org/index.py?req=show&file=faq19.013.htp
>> , I connect to the 'notify' signal for each pane to find out when
>> the separator has been moved. The callback function blocks the
>> signal for the other pane, changes its position to match the
>> first pane, and then unblocks the signal.
>>
>> The problem is that the signal doesn't seem to be blocked
>> sometimes, so the program goes into an infinite loop. There are
>> easy workarounds for this, but they're ugly and unsatisfying. In
>> particular, the program loops when the panes are first shown if
>> the contents of two diagonally opposite subpanes are larger than
>> the contents of the other two.
>>
>> I've appended short program that illustrates the problem. Just
>> starting the program will put it into an infinite loop. If you
>> replace paneMoved by paneMoved_workaround, the problem goes away.
>>
>> Why doesn't blocking the signal work? Am I doing something wrong?
>>
>> I've run this test on OS X with python 2.5, gtk 2.14.7, and pygtk
>> 2.12.1, and on Linux with python 2.4, gtk 2.8.20, and pygtk 2.8.6.
>>
>>
[ code deleted ]
>>
> You have to allow the widgets to shrink - remove the "shrink=0" args
> from the pack1() and pack2() calls.
>
> John
Thanks for the response, but what if I don't want the widgets to be
able to shrink? Is that possible? Why isn't calling handler_block
before calling set_position sufficient?
-- Steve
--
-- EMail: stephen.langer at nist.gov Phone: (301)
975-5423 --
-- WWW: http://math.nist.gov/mcsd/Staff/SLanger/ Fax: (301)
975-3553 --
-- Mail: NIST; 100 Bureau Drive -- Stop 8910; Gaithersburg, Md
20899-8910 --
-- "I don't think this will work. That's why it's
science." --
-- Naomi Langer (age 6), 17 Feb
2003 --
More information about the pygtk
mailing list