[pygtk] Reacting to SpinButton input, or how does SpinButton parse text?

Joel Hedlund yohell at ifm.liu.se
Wed Dec 17 02:38:55 WST 2008


Hi!

I've got a SpinButton that governs a float setting in my program. If the 
user should enter something something illegal in there (for example "hi 
mom!") I want to paint it red to show the user the error of his ways.

This seems simple enough - just connect to the 'changed' signal of the 
SpinButton and do whatever you need to, but here's the snag: I can't 
detect faulty input since I have no idea how the SpinButton parses text.

Using float(b.get_text()) does not work, because the text is 
internationallized and may have decimal commas and other weird things 
that python does not like. Using locale.atof(b.get_text()) does not work 
either, because in the en_US locale the string "0,11" is interpreted by 
the SpinButton as 0 and by locale.atof as 11. For integers it's no 
easier, because "50,1,,1" is interpreted by the SpinButton as 50 and by 
locale.atof as 5011.

Furthermore, I can't connect to 'value-changed' because that's only 
updated on correct input, and I cant use 'input' because the docs say 
that can't be handled from pygtk.

So what do I do?
/Joel Hedlund



More information about the pygtk mailing list