Не могу установить полный диапазон на QSpinBox - PullRequest
2 голосов
/ 22 октября 2010

Я пытаюсь создать 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 Ответ

1 голос
/ 22 октября 2010

, который принимает все числа

Я предполагаю, что вы имеете в виду все целых чисел , а не все числа?

Помните, что хотя PyQt написан на Pythonлежащая в основе библиотека Qt написана на C ++, поэтому она, скорее всего, ограничена целыми числами фиксированного размера определенной ширины (например, 32-разрядными или 64-разрядными).Если вы попытаетесь использовать числа, близкие к пределам, некоторые внутренние вычисления в QSpinBox могут переполниться и обернуться вокруг, что может объяснить необычное поведение, которое вы видите.

Чтобы разрешить любые целые числа, используйте QLineEdit и затем проанализируйте содержимое в целое число Python, используя функцию int.Это позволит ввести все целые числа (вы можете даже превысить sys.maxint).Вы потеряете стрелки вращения.

...