Callback pygtk-旋转按钮:输出信号

Callback pygtk-旋转按钮:输出信号,callback,pygtk,text-formatting,Callback,Pygtk,Text Formatting,我在应用程序中使用一个旋转按钮,让用户选择一个介于-1和100之间的数字。在我的应用程序中-1表示无穷大。因此,如果用户选择值-1,我想显示文本“Infinity”。这是我的代码: def spin_output(spin): digits = int(spin.props.digits) value = spin.props.value if value < 0: spin.props.text = "Infinity" # u"\u221E"

我在应用程序中使用一个旋转按钮,让用户选择一个介于-1和100之间的数字。在我的应用程序中-1表示无穷大。因此,如果用户选择值-1,我想显示文本“Infinity”。这是我的代码:

def spin_output(spin):
    digits = int(spin.props.digits)
    value = spin.props.value
    if value < 0:
        spin.props.text = "Infinity"  # u"\u221E"
    else:
        spin.props.text = '{0:.{1}f}'.format(value, digits)
    return True
self.my_spin.connect('output', spin_output)
def spin_输出(spin):
数字=整数(旋转道具数字)
value=spin.props.value
如果值<0:
spin.props.text=“无限”#u“\u21e”
其他:
spin.props.text='{0:.{1}f}'。格式(值,数字)
返回真值
self.my\u spin.connect('output',spin\u output)
当选择“无穷大”值且用户按下“向上”按钮时,该值将变为100而不是0。 当我将“无穷大”替换为u“\u221E”并且用户在选择“向上”按钮时,该值将更改为1

我想要的是,用户可以按顺序选择值:无穷大,0,1。。。 我犯了什么错


我认为当用户更改值时,只会更改基础调整,而我的函数仅用于显示当前值。

发生的情况是,旋转按钮将字符串“无穷大”解释为用户输入的字符串,并尝试将其解析为值。
gtk.Scale
小部件提供了一个名为
format value
的信号,该信号用于显示自定义值,就像您试图做的那样,但我没有看到类似的旋转按钮信号

下面是一些使用刻度的东西,它可能会满足您的要求:

#!/usr/bin/env python

import gtk

def scale_output(scale, value):
    if value < 0:
        return "Infinity"  # u"\u221E"
    return "{0}".format(int(value))

window = gtk.Window(gtk.WINDOW_TOPLEVEL)
adjustment = gtk.Adjustment(-1, -1, 100, 1, 1)
scale = gtk.HScale(adjustment)
window.set_default_size(300, 100)
window.add(scale)
scale.connect('format-value', scale_output)
window.connect('destroy', gtk.main_quit)
window.show_all()
gtk.main()
#/usr/bin/env python
进口gtk
def scale_输出(比例、值):
如果值<0:
返回“无穷大”#u“\u221E”
返回“{0}”。格式(int(value))
窗=gtk.window(gtk.window_顶层)
调整=gtk.调整(-1,-1100,1,1)
刻度=gtk.hs刻度(调整)
窗口。设置默认大小(300100)
窗口。添加(比例)
scale.connect('format-value',scale\u输出)
window.connect('destroy',gtk.main\u退出)
window.show_all()
gtk.main()

发生的事情是,“旋转”按钮将字符串“无穷大”解释为用户输入的字符串,并尝试将其解析为值。
gtk.Scale
小部件提供了一个名为
format value
的信号,该信号用于显示自定义值,就像您试图做的那样,但我没有看到类似的旋转按钮信号

下面是一些使用刻度的东西,它可能会满足您的要求:

#!/usr/bin/env python

import gtk

def scale_output(scale, value):
    if value < 0:
        return "Infinity"  # u"\u221E"
    return "{0}".format(int(value))

window = gtk.Window(gtk.WINDOW_TOPLEVEL)
adjustment = gtk.Adjustment(-1, -1, 100, 1, 1)
scale = gtk.HScale(adjustment)
window.set_default_size(300, 100)
window.add(scale)
scale.connect('format-value', scale_output)
window.connect('destroy', gtk.main_quit)
window.show_all()
gtk.main()
#/usr/bin/env python
进口gtk
def scale_输出(比例、值):
如果值<0:
返回“无穷大”#u“\u221E”
返回“{0}”。格式(int(value))
窗=gtk.window(gtk.window_顶层)
调整=gtk.调整(-1,-1100,1,1)
刻度=gtk.hs刻度(调整)
窗口。设置默认大小(300100)
窗口。添加(比例)
scale.connect('format-value',scale\u输出)
window.connect('destroy',gtk.main\u退出)
window.show_all()
gtk.main()

好的,我找到了一个解决方案。我为输出信号处理程序编写了对应的程序。。。输入信号处理程序:-)


这似乎很有效;-)

好的,我找到了解决办法。我为输出信号处理程序编写了对应的程序。。。输入信号处理程序:-)

这似乎很有效;-)