Класс PyQt QSpinBox в Python — свойства и пример
В этом уроке вы узнаете, как использовать PyQt QSpinBox для создания виджета счетчика в Python.
Знакомство с PyQt QSpinBox
Счетчик объединяет текстовый ввод и элемент управления вверх-вниз. Элемент управления вверх-вниз позволяет вам вращать набор инкрементных значений:
Значения счетчика могут быть целыми числами или дискретными наборами значений, например, днями недель и месяцами лет.
Счетчик позволяет вам увеличивать или уменьшать значение, нажимая кнопки вверх/вниз или клавишу вверх/вниз на клавиатуре. Также вы можете вручную ввести значение в счетчик.
Для создания счетчика используйте класс QSpintBox:
QSpinBox()
Всякий раз, когда значение счетчика изменяется, он испускает сигнал valueChanged(), который отправляет текущее значение в виде целого числа. Кроме того, QSpinBox испускает сигнал textChanged, который предоставляет значение счетчика как экземпляр QString.
В следующей таблице перечислены некоторые полезные свойства QSpinBox:
Свойство | Описание |
---|---|
value | Текущее целочисленное значение счетчика. |
cleanText | Текущее строковое значение счетчика (исключая prefix и suffix). |
maximum | Максимальное целое значение счетчика. |
minimum | Минимальное целое значение счетчика. |
prefix | Строка, добавляемая к отображаемому значению. |
suffix | Строка, которая добавляется к отображаемому значению. |
singleStep | Увеличение/уменьшение целочисленного значения при нажатии стрелок вверх/вниз |
wrapping | Это логическое значение, которое определяет, следует ли переходить от одного конца диапазона к другому при нажатии стрелок вверх/вниз. |
Давайте рассмотрим пример использования класса PyQt QSpinBox.
Пример PyQt QSpinBox
Следующая программа отображает счетчик, позволяющий ввести сумму от 1 до 100:
import sys from PyQt6.QtWidgets import QApplication, QWidget, QSpinBox, QLabel, QFormLayout from PyQt6.QtCore import Qt class MainWindow(QWidget): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.setWindowTitle('PyQt QSpinBox') self.setMinimumWidth(300) # create a grid layout layout = QFormLayout() self.setLayout(layout) amount = QSpinBox(minimum=1, maximum=100, value=20, prefix='$') amount.valueChanged.connect(self.update) self.result_label = QLabel('', self) layout.addRow('Amount:', amount) layout.addRow(self.result_label) # show the window self.show() def update(self, value): self.result_label.setText(f'Current Value: {value}') if __name__ == '__main__': app = QApplication(sys.argv) window = MainWindow() sys.exit(app.exec())
Как это работает.
- Сначала создайте объект QSpinBox с параметрами минимума, максимума, значения и префикса:
amount = QSpinBox(minimum=1, maximum=100, value=20, prefix='$')
- Во-вторых, подключите сигнал valueChanged к методу update():
amount.valueChanged.connect(self.update)
- В-третьих, создайте QLabel для отображения текущего значения счетчика:
self.result_label = QLabel('', self)
- Наконец, определите метод update(), который изменяет значение метки результата всякий раз, когда изменяется значение счетчика:
def update(self, value): self.result_label.setText(f'Current Value: {value}')