PyQt5: QSpinBox
Torna all’indice degli appunti
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
Commenti recenti