[pygtk] Problem with Notebook
John Ehresman
jpe at wingware.com
Wed Dec 24 01:40:37 WST 2008
Frédéric wrote:
> On mardi 23 décembre 2008, John Ehresman wrote:
>
>> This is almost certainly due to being in a signal handler of the
>> notebook widget and how the switch-page operation is implemented in the
>> gtk notebook C code. The probable solution is to display the dialog,
>> but don't block. Then switch the page when the dialog is closed.
>
> I think this is more or less what I do... What do you have in mind,
> exactly? How can I switch the page, as the set_current_page() does not
> work?
Does controller.run() block? If so, change the call to something that
does not block and put the self.notebook.set_current_page(1) into a
function / method that invoked later.
def __onNoteBookSwitchedPage(self, widget, page, page_num):
if page_num == 0 and self._model.camera.lens.type_ == 'fisheye':
controller = WarningMessageController(_("Warning"),
_("Can't set shooting mode"))
controller.run()
self.notebook.set_current_page(1) # Does not work!!!
If .run() already does not block, call self.notebook.set_current_page(1)
from an idle call; e.g. something like
controller.run()
def on_idle():
self.notebook.set_current_page(1)
gtk.idle_add(on_idle) # <-- I think there's a newer api for this
Note that care should be taken that things aren't destroyed or changed
before on_idle is invoked.
John
More information about the pygtk
mailing list