Home > PyQt5, python > PyQt5: QDoubleSpinBox

PyQt5: QDoubleSpinBox

21 Maggio 2019

Torna all’indice degli appunti

QDoubleSpinBox

La classe QDoubleSpinBox crea un widget per la regolazione di un numero decimale, o mediante le freccette regolatrici, o scrivendo direttamente nella entry dedicata.
E’ praticamente identico al widget QSpinBox, che però gestisce i numeri interi.
Le funzionalità dell’oggetto QDoubleSpinBox, sono ereditate dalla classe QAbstractSpinBox.
Per creare l’oggetto double_spinbox, si utilizza il costruttore è QDoubleSpinBox:

>>> from PyQt5.QtWidgets import QApplication, QDoubleSpinBox
>>> app = QApplication([])
>>> double_spinbox = QDoubleSpinBox()

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

>>> double_spinbox.minimum()
0.0
>>> double_spinbox.maximum()
99.99

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

>>> double_spinbox.setMinimum(5.0)
>>> double_spinbox.setMaximum(300.0)
>>> double_spinbox.minimum()
5.0
>>> double_spinbox.maximum()
300.0

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

>>> double_spinbox.setValue(50)
>>> double_spinbox.value()
50.0

REGOLAZIONE double_spinbox DA TASTIERA

I tasti utilizzabili da tastiera per regolare lo double_spinbox sono:

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

REGOLAZIONE DIAL DA MOUSE

Se usiamo la rotella del mouse per regolare lo double_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

DECIMALI

Di default, il double_spinbox gestisce 2 decimali. Per modificare questo numero, si utilizza il metod setDecimals(num) e per ottenere il numero di decimali utilizzati, si utilizza il metodo
decimals:

>>> double_spinbox.setValue(50.55555555)
>>> double_spinbox.value()
50.56
>>> double_spinbox.decimals()
2
>>> double_spinbox.setDecimals(5)
>>> double_spinbox.setValue(50.55555555)
>>> double_spinbox.value()
50.55556

Di seguito il codice che crea il widget:

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


import sys


class MainWindow(QMainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.setWindowTitle("QDoubleSpinBox 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)
        double_spinbox = QDoubleSpinBox()
        double_spinbox.setRange(0, 300)
        double_spinbox.setValue(50)
        double_spinbox.setSingleStep(0.5)
        layout.addWidget(double_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 double_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 double_spinbox, si utilizzano invece i metodi: prefix e suffix.

...

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

SEGNALI

Come per lo spinbox, l’unico segnale da tenere in considerazione nelle double_spinbox, è:

valueChanged: Emesso qualdo il valore dello double_spinbox viene modificato;

Torna all’indice degli appunti

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