2010-10-22 10 views
2

Je suis en train de créer un QSpinBox qui accepte tous les chiffres, mais je vais avoir des problèmes avec des valeurs maximales hteImpossible de définir gamme complète sur QSpinBox

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

Je voulais simplement utiliser sbox.setRange(-sys.maxint-1, sys.maxint) mais alors je Je ne pouvais pas entrer quoi que ce soit, si j'augmente la portée plus qu'au-dessus de toute la spinner. Quelqu'un sait pourquoi?

Répondre

1

qui accepte tous les numéros

Je suppose que vous voulez dire tous les entiers plutôt que tous les nombres? Rappelez-vous que même si PyQt est écrit en Python, la bibliothèque Qt sous-jacente est écrite en C++, elle est donc probablement limitée à des entiers de taille fixe d'une certaine largeur (par exemple 32 bits ou 64 bits). Si vous essayez d'utiliser des nombres proches des limites, certains calculs internes dans QSpinBox peuvent déborder et se recouvrir, ce qui pourrait expliquer le comportement inhabituel que vous voyez.

Pour autoriser des entiers, utilisez QLineEdit, puis analysez le contenu en un entier Python à l'aide de la fonction int. Cela permettra à tous les entiers d'être entrés (vous pouvez même aller au-dessus de sys.maxint). Vous allez perdre les flèches de spin.

Questions connexes