如何更改gtk.spinbutton中的显示

如何更改gtk.spinbutton中的显示,gtk,spinner,Gtk,Spinner,我有一个gtk.spinbutton,我想根据语言环境设置数字 格式。 比如说,我安装了匈牙利语,所以我的小数分隔符是 “.”(点)和千位分隔符是“,”(逗号)例如:我的spinbutton值是 1131191所以在用户焦点离开gtk.spinbutton后,我的值应该 转换为11311.91。转换由我完成,但我无法设置 使用set_text/set_value方法将其转换为gtk.spinbutton 感谢您的帮助 谢谢可以通过处理信号来设置旋转按钮的格式 如果您还想让用户以本地化格式输入值(

我有一个gtk.spinbutton,我想根据语言环境设置数字 格式。 比如说,我安装了匈牙利语,所以我的小数分隔符是 “.”(点)和千位分隔符是“,”(逗号)例如:我的spinbutton值是 1131191所以在用户焦点离开gtk.spinbutton后,我的值应该 转换为11311.91。转换由我完成,但我无法设置 使用set_text/set_value方法将其转换为gtk.spinbutton

感谢您的帮助


谢谢

可以通过处理信号来设置旋转按钮的格式

如果您还想让用户以本地化格式输入值(例如,让用户键入“1000”而不是“1000”),请处理信号

(这段代码比应该的要长,因为PyGTK没有正确包装输入,因此出现了ctypes hack。它只是解析文本,然后将数值分配给指针位置。)

信用:ctypes hack和digits格式的灵感来自PyGTK邮件列表

locale.setlocale(locale.LC_ALL, '')

def output(spin):
    digits = int(spin.props.digits)
    value = spin.props.value
    text = locale.format('%.*f', (digits, value), True)
    spin.props.text = text
    return True

spin.connect('output', output)
def input(spin, new_value):
    text = spin.props.text
    try:
        value = locale.atof(text)
    except ValueError:
        return -1
    p = ctypes.c_double.from_address(hash(new_value))
    p.value = value
    return True

spin.connect('input', input)