Home > PyQt5, python > PyQt5: QSpinBox

PyQt5: QSpinBox

21 Maggio 2019

Torna all’indice degli appunti

QSpinBox

La classe QSpinBox crea un widget per la regolazione di un numero, o mediante le freccette regolatrici, o scrivendo direttamente nella entry dedicata.
Le funzionalità dell’oggetto QSpinBox, sono ereditate dalla classe QAbstractSpinBox.
Per creare l’oggetto spinbox, si utilizza il costruttore è QSpinBox:

>>> from PyQt5.QtWidgets import QApplication, QSpinBox
>>> app = QApplication([])
>>> spinbox = QSpinBox()

Di default il valore del range minimo e massimo dello spinbox è 0-99.
Questi valori sono reperibili con i due metodi minimum e maximum:

>>> spinbox.minimum()
0
>>> spinbox.maximum()
99

Per settare un range differente, si utilizzano i metodi setMinimum(minimum), setMaximum(maximum), o in un colpo solo setRange(minimum, maximum):

>>> spinbox.setMinimum(5)
>>> spinbox.setMaximum(300)
>>> spinbox.minimum()
5
>>> spinbox.maximum()
300

Il valore sul quale si posizionerà il spinbox, è settabile con il metodo setValue(value) e ottenibile con value:

>>> spinbox.setValue(50)
>>> spinbox.value()
50

REGOLAZIONE spinbox DA TASTIERA

I tasti utilizzabili da tastiera per regolare lo spinbox sono:

frecce su/giù: aggiustano il valore dello spinbox dello step definito con il metodo setSingleStep(step);
Pag Down/Pag Up: aggiustano il valore del spinbox dello step definito con il metodo setPageStep(step);
Home: porta il spinbox al valore minimo, definito con il metodo setMinimum(minimum);
End: porta il spinbox al valore massimo, definito con il metodo setMaximum(maximum);

REGOLAZIONE DIAL DA MOUSE

Se usiamo la rotella del mouse per regolare lo spinbox, il valore incrementato sarà quello determinato con il metodo setSingleStep(step).
Il valore di default dello scroll, è reperibile dall’istanza della classe QStyleHints, classe che permette di accedere a specifici settaggi relativi alla piattaforma corrente. L’istanza di tale classe è ottenibile con il metodo styeHints dell’oggetto QApplication.

>>> from PyQt5.QtWidgets import QApplication
>>> app = QApplication([])
>>> hints = app.styleHints()
>>> hints.wheelScrollLines()
3

Di seguito il codice che crea il widget:

from PyQt5.QtWidgets import QMainWindow
from PyQt5.QtWidgets import (QWidget, QApplication, QVBoxLayout, QSpinBox)


import sys


class MainWindow(QMainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.setWindowTitle("QSpinBox Example")
        self.central_widget = FormWidget(parent=self)
        self.setCentralWidget(self.central_widget)

        self.resize(200, 50)


class FormWidget(QWidget):
    def __init__(self, parent):
        super(FormWidget, self).__init__(parent)
        layout = QVBoxLayout()
        self.setLayout(layout)
        spinbox = QSpinBox()
        spinbox.setRange(0, 300)
        spinbox.setValue(50)
        spinbox.setSingleStep(2)
        layout.addWidget(spinbox)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    main_window = MainWindow(parent=None)
    main_window.show()
    sys.exit(app.exec_())

PREFISSO E SUFFISSO

Ovviamente è possibile settare un prefisso ed un suffisso per il valore visualizzato all’interno dello spinbox, con i metodi:
setPrefix(prefix): setta il prefisso indicato dalla stringa prefix;
setSuffix(suffix): setta il suffisso indicato dalla stringa suffix;

Per ottenere gli eventuali prefissi e suffissi dello spinbox, si utilizzano invece i metodi: prefix e suffix.

...

class FormWidget(QWidget):
    def __init__(self, parent):
        ...
        spinbox.setPrefix("Price:")
        spinbox.setSuffix("$")
        spinbox.setSingleStep(2)
        layout.addWidget(spinbox)
...

SEGNALI

L’unico segnale da tenere in considerazione nelle spinbox, è:

valueChanged: Emesso qualdo il valore dello spinbox viene modificato;

>>> spinbox.valueChanged.connect(lambda value: print("[SIG] value changed to: %s" % value))
<PyQt5.QtCore.QMetaObject.Connection object at 0x0358CDF0>
>>> spinbox.setValue(50)
[SIG] value changed to: 50

Torna all’indice degli appunti

Categorie:PyQt5, python Tag: ,
I commenti sono chiusi.