Error using SetLabel

Hello, I hope some wxWidgets / GNOME experts will know about this
problem:

I use the StaticText.SetLabel to change the value of a label at runtime
from a python callback from a custom block. Randomly I get this GNOME
error:

Pango-ERROR **: file pango-layout.c: line 3230
(pango_layout_check_lines): assertion failed: (!layout->log_attrs)
aborting…

Thinking that there was something wrong with changing the text of a
StaticText, I change the call into SetForegroundColour, but I have
exactly the same behaviour…

any hint?

best regards
Matteo

Thank you so much Johnatan for the hint - that was the problem indeed!!!
I followed the approach used in scopesink.py, encapsulating a gr message
in a wx DATA EVENT, letting the panel manage the data extraction and
presentation. It works fine now!

thank you very much
Matteo iz2eeq

On Sun, 2007-01-14 at 08:50 +0100, Matteo C. wrote:

Pango-ERROR **: file pango-layout.c: line 3230
(pango_layout_check_lines): assertion failed: (!layout->log_attrs)
aborting…

I have had a very similar problem in the past.

I’d give it a high probability you are running into a threading issue.
wxWidgets is not reentrant, and updating controls from a thread
different from the one that is running the wxWidgets event loop will
create all sorts of problems eventually.

The solution is to create a custom wxWidgets event, then use wxPostEvent
in your GR call back function. You then use a normal wxWidgets callback
function to handle that event to update the control.

This link has some slightly outdated notes on doing this from C++;
you’ll have to translate them mentally to the wxPython domain:

http://www.wxwidgets.org/wiki/index.php/Custom_Events

It’s a major pain, especially if you have to do it for several different
event types. But the key difference is that wxWidgets main thread is
the one that is running and calling your wxWidgets event handler, so
there are no reentrancy issues.

I beat my head against the wall for a couple days on this once :frowning:


Johnathan C., AE6HO
Corgan Enterprises LLC
[email protected]