【问题标题】:Slider with max value greater than 2147483647 in wxPython Phoenix?wxPython Phoenix中最大值大于2147483647的滑块?
【发布时间】:2016-07-15 20:53:24
【问题描述】:

基本上,来自 wxPython Phoenix 的 wx.Slider 小部件不能超过 2147483647

确实,

slider = wx.Slider( parent   = parent,
                    value    = 10,
                    minValue = 0,
                    maxValue = 2147483647 )
print slider.GetMax()

输出:

2147483647

而,

slider = wx.Slider( parent   = parent,
                    value    = 10,
                    minValue = 0,
                    maxValue = 2147483648 )
print slider.GetMax()

输出:

(program.py:5403): Gtk-CRITICAL **: IA__gtk_range_set_range: 断言 'min 0

我需要对那个小部件使用更大的值。任何解决方法?

【问题讨论】:

    标签: python slider wxpython limit


    【解决方案1】:

    您是否考虑过将您的值除以适当的除数。

    编辑:
    有时你只需要务实。您不可能显示或使用长度为 20 亿的滑块。无论是否自动生成,使滑块使用 0% 到 100% 之间的值更简单,您可以随时操纵tooltip 来显示一个值,如果这是必要的,但即使是给定位置的准确性在我看来,使用如此庞大的数字会非常不准确,以至于毫无意义。

    【讨论】:

    • 是的,但它不能工作,因为滑块是自动生成的,而且这将是一个案例划分太多,没有意义。
    • 这是一个不错的方法,但不幸的是,这些值必须是可准确设置的。高值可能只使用一次,但必须能够精确设置。因此我想我会在滑块的右侧添加一个可编辑的wx.TextCtrl,以便可以准确设置该值,并且wx.SpinCtrl将用于显示范围内的值并进行近似设置。
    • 请注意wx.SpinCtrl 具有相同的大小限制 (2147483647)
    • 问题似乎与 C 的 limits.h 文件有关,该文件指定了整数的最大/最小大小,而 64 位机器上的 sys.maxint 为 9223372036854775807,limits.h 指定了 2147483647 . 我不知道为什么!
    • 糟糕,我的意思是wx.Slider。是的,我也看到了wx.SpinCtrl。出于与 32 位机器的兼容性原因,我假设它是用 int 32 位实现的(因为 2147483647 是 signed int32 的最大正值)。还有wx.SpinCtrlDouble 表示最大值和浮点数。
    【解决方案2】:

    我假设它是 32 位机器?
    2147483647(或 2^31-1(因为我们从 0 开始数))是 32 位机器可以处理的最大整数

    【讨论】:

    • 64 位机器。其他小部件可以达到更大的值,只有这个似乎有某种限制。实际上,其中一些有多个版本(即wx.SpinCtrlwx.SpinCtrlDouble)。
    • 我假设 wxPython Phoenix 会限制它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多