Класс PyQt QSpinBox в Python — свойства и пример

В этом уроке вы узнаете, как использовать PyQt QSpinBox для создания виджета счетчика в Python.

Знакомство с PyQt QSpinBox

Счетчик объединяет текстовый ввод и элемент управления вверх-вниз. Элемент управления вверх-вниз позволяет вам вращать набор инкрементных значений:

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}')
Похожие посты
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *