PyQt5 QSpinBox – 允许包裹数值

  • Post category:Python

PyQt5是一个Python的GUI(图形用户界面)编程库,它包含有关构建交互式应用程序和图形用户界面的类和函数。QSpinBox是PyQt5中的一个重要控件之一,它提供了一个方便的界面来选择整数值。其中允许包裹数值是QSpinBox的一个重要特性,它允许用户在达到最大或最小值时继续递增或递减,从而创建出循环列表的行为。

使用步骤

1. 导入PyQt5库和必要的组件

from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QSpinBox

2. 创建QSpinBox对象

spin_box = QSpinBox()

3. 设置QSpinBox的范围和步长

spin_box.setMinimum(-10)
spin_box.setMaximum(10)
spin_box.setSingleStep(1)

4. 允许包裹数值

spin_box.setWrapping(True)

5. 处理用户选择的数值,可以通过信号与槽函数实现:

def on_value_changed(val):
    print('Selected value:', val)

spin_box.valueChanged.connect(on_value_changed)

6. 将控件添加到界面中

widget = QWidget()
widget.setLayout(QVBoxLayout())
widget.layout().addWidget(spin_box)

7. 显示界面

main_window = QMainWindow()
main_window.setCentralWidget(widget)
main_window.show()

示例说明

示例一

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

def create_main_window():
    spin_box = QSpinBox()
    spin_box.setMinimum(0)
    spin_box.setMaximum(24)
    spin_box.setSingleStep(1)
    spin_box.setWrapping(True)
    spin_box.valueChanged.connect(on_value_changed)

    widget = QWidget()
    widget.setWindowTitle('PyQt5 QSpinBox Example')
    widget.setLayout(QVBoxLayout())
    widget.layout().addWidget(spin_box)

    main_window = QMainWindow()
    main_window.setWindowTitle('PyQt5 QSpinBox Example')
    main_window.setCentralWidget(widget)
    main_window.resize(300, 150)
    main_window.show()

def on_value_changed(val):
    print('Selected value:', val)

if __name__ == '__main__':
    app = QApplication([])
    create_main_window()
    app.exec_()

在这个例子中,我们创建了一个从0到24的QSpinBox对象,允许包裹数值,并通过绑定valueChanged事件来处理用户选择的数值。界面中只有一个控件(QSpinBox),并且当该控件的值发生变化时,会在控制台中输出所选择的值。

示例二

from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QSpinBox, QGridLayout

def create_main_window():
    spin_box_1 = QSpinBox()
    spin_box_1.setMinimum(0)
    spin_box_1.setMaximum(24)
    spin_box_1.setSingleStep(1)
    spin_box_1.setWrapping(True)
    spin_box_1.valueChanged.connect(on_value_changed)

    spin_box_2 = QSpinBox()
    spin_box_2.setMinimum(0)
    spin_box_2.setMaximum(60)
    spin_box_2.setSingleStep(5)
    spin_box_2.setWrapping(True)
    spin_box_2.valueChanged.connect(on_value_changed)

    widget = QWidget()
    widget.setWindowTitle('PyQt5 QSpinBox Example')
    widget.setLayout(QGridLayout())
    widget.layout().addWidget(spin_box_1, 0, 0)
    widget.layout().addWidget(spin_box_2, 0, 1)

    main_window = QMainWindow()
    main_window.setWindowTitle('PyQt5 QSpinBox Example')
    main_window.setCentralWidget(widget)
    main_window.resize(300, 150)
    main_window.show()

def on_value_changed(val):
    print('Selected value:', val)

if __name__ == '__main__':
    app = QApplication([])
    create_main_window()
    app.exec_()

在这个例子中,我们创建了两个QSpinBox对象,分别用于选择小时和分钟,它们都允许包裹数值,并通过绑定valueChanged事件来处理用户选择的数值。QSpinBox对象通过QGridLayout布局方式添加到widget对象中,显示到主窗口中。当用户在任何一个QSpinBox对象中选择数字时,控制台中会输出所选择的值。