无法设置QSpinBox的完整范围

2 投票
1 回答
1469 浏览
提问于 2025-04-16 05:54

我正在尝试创建一个可以输入所有数字的QSpinBox,但在设置最大值时遇到了一些麻烦。

 sbox = QSpinBox(self)
 sbox.setRange(-sys.maxint/88-1, sys.maxint/86)
 sbox.setValue(int(setting.value))

我本来想直接用 sbox.setRange(-sys.maxint-1, sys.maxint) 来设置范围,但这样我就无法输入任何数字。如果我把范围再调大一点,整个数字选择器就会出现问题。有没有人知道这是为什么呢?

1 个回答

2

接受所有数字

我想你是指所有的整数,而不是所有的数字,对吧?

记住,虽然PyQt是用Python写的,但它底层的Qt库是用C++写的,所以它可能只支持某种固定大小的整数(比如32位或64位)。如果你尝试使用接近这些限制的数字,那么在QSpinBox内部的一些计算可能会出现溢出,导致结果变得奇怪,这可能就是你看到的异常行为的原因。

如果想要允许输入任何整数,可以使用QLineEdit,然后用int函数把内容转换成Python的整数。这样就可以输入所有整数(甚至可以超过sys.maxint)。不过,你会失去上下调节的箭头。

撰写回答