Outils pour utilisateurs

Outils du site


qspinbox_pyqt4

Saisie de nombres entiers: QSpinBox

Créer un spinbox

spinBox = QtGui.QSpinBox(parent)

Positionner et redimensionner un spinbox

Exemple: x=155, y=65, largeur=76, hauteur=26

spinBox.setGeometry(QtCore.QRect(155, 65, 76, 26))

Dimensionner la police de caractère du spinbox

Exemple pour une taille de 12 points:

font = QtGui.QFont()
font.setPointSize(12)
spinBox.setFont(font)

Définir ou trouver le mini et le maxi d'affichage d'un spinbox

Exemple pour nombre mini = 1 et nombre maxi = 999

spinBox.setMinimum(1)
spinBox.setMaximum(999)

Pour trouver les nombres mini et maxi du spinbox:

nombremini = spinBox.minimum()
nombremaxi = spinBox.maximum()

Afficher un nombre

Exemple: afficher 55

spinBox.setValue(55)

Si le nombre à afficher est inférieur au nombre mini du spinbox, c'est le nombre mini qui s'affiche.

Si le nombre à afficher est supérieur au nombre maxi du spinbox, c'est le nombre maxi qui s'affiche.

Lire le nombre affiché

nombre = spinBox.value()

Changer la couleur de fond

Exemple en jaune:

spinBox.setStyleSheet("background-color: yellow")

Permettre d'accélérer le défilement des nombres en cas d'appui prolongé

spinBox.setAccelerated(True)

Activer ou désactiver l'accès au spinbox

Pour activer:

spinBox.setEnabled(True)

Pour désactiver:

spinBox.setEnabled(False)

Pour savoir si le spinbox est activé ou non

etat = spinBox.isEnabled()

Déclencher un évènement à chaque changement de valeur

Définir la connexion entre le spinbox et la méthode de traitement de l'évènement (ici, change)

QtCore.QObject.connect(spinBox, QtCore.SIGNAL('valueChanged(int)'), change)
def change(nouveaunombre):
    ...
    # traitement de l'évènement
    ...

Petit code test

#!/usr/bin/python
# -*- coding: utf-8 -*-
from __future__ import division
 
import sys
from PyQt4 import QtCore, QtGui
 
class Fenetre(QtGui.QWidget):
    def __init__(self, parent=None):
        super(Fenetre, self).__init__(parent)
        self.setWindowTitle("Code test")
 
        # créer le spinbox
        self.spinBox = QtGui.QSpinBox(self)
 
        # initialiser le spinBox
        self.spinBox.setMinimum(5)
        self.spinBox.setMaximum(90)
        self.spinBox.setValue(55)
        self.spinBox.setStyleSheet("background-color: yellow")
 
        # faire que chaque modification du spinBox exécute la méthode 'change'
        QtCore.QObject.connect(self.spinBox, QtCore.SIGNAL('valueChanged(int)'), self.change) 
 
        # création d'une ligne d'édition
        self.lineEdit = QtGui.QLineEdit(self)
 
        # positionnement des widgets dans la fenêtre
        posit = QtGui.QGridLayout()
        posit.addWidget(self.spinBox, 0, 1)
        posit.addWidget(self.lineEdit, 1, 0, 1, 3)
        self.setLayout(posit)
 
    def change(self, nb):
        """méthode exécutée à chaque changement des radioboutons"""
        self.lineEdit.setText(u"%d" % (nb))
 
if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    QtGui.QApplication.setStyle(QtGui.QStyleFactory.create('plastique'))
    fen = Fenetre()
    fen.show()
    sys.exit(app.exec_())
qspinbox_pyqt4.txt · Dernière modification: 2010/09/24 20:34 de tyrtamos

Outils de la page