PyQt5 QSpinBox – 使旋转盒可见

  • Post category:Python

首先,需要安装PyQt5库,可以通过以下命令进行安装:

pip install PyQt5

然后导入QSpinBox模块:

from PyQt5.QtWidgets import QSpinBox

接下来可以创建QSpinBox对象并设置初始值和范围:

spin_box = QSpinBox()
spin_box.setRange(0, 100)
spin_box.setValue(50)

或者通过构造函数进行初始化:

spin_box = QSpinBox(parent)
spin_box.setMinimum(0)
spin_box.setMaximum(100)
spin_box.setValue(50)

通过上述代码,就已经创建了一个值范围在0到100之间,初始值为50的旋转盒对象。

为旋转盒添加事件处理函数,可以监听旋转盒值的变化,当值发生变化时,就会触发相应的函数:

def on_spin_box_value_changed(value):
    print(value)

spin_box.valueChanged.connect(on_spin_box_value_changed)

这样,当旋转盒的值发生变化时,就会打印出新的值。

要使旋转盒可见,需要将其添加到窗口中:

layout.addWidget(spin_box)

其中,layout是窗口的布局管理器对象。

下面是完整的示例代码,包括创建旋转盒、添加事件处理函数和将旋转盒添加到窗口中:

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

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        spin_box = QSpinBox()
        spin_box.setRange(0, 100)
        spin_box.setValue(50)
        spin_box.valueChanged.connect(self.on_spin_box_value_changed)

        layout = QVBoxLayout()
        layout.addWidget(spin_box)

        widget = QWidget()
        widget.setLayout(layout)

        self.setCentralWidget(widget)

    def on_spin_box_value_changed(self, value):
        print(value)

app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())

这样,就创建了一个简单的窗口,其中包含一个可见的旋转盒,当旋转盒的值发生变化时,就会将新值打印到控制台上。

另一个示例是创建带有两个旋转盒的窗口,并在这两个旋转盒的值发生变化时,将它们的和显示在标签控件中:

from PyQt5.QtWidgets import QApplication, QMainWindow, QSpinBox, QVBoxLayout, QHBoxLayout, QWidget, QLabel
import sys

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        spin_box1 = QSpinBox()
        spin_box1.setRange(0, 100)
        spin_box1.setValue(50)
        spin_box1.valueChanged.connect(self.on_spin_box_value_changed)

        spin_box2 = QSpinBox()
        spin_box2.setRange(0, 100)
        spin_box2.setValue(50)
        spin_box2.valueChanged.connect(self.on_spin_box_value_changed)

        label = QLabel()

        layout1 = QVBoxLayout()
        layout1.addWidget(spin_box1)
        layout1.addWidget(spin_box2)

        layout2 = QHBoxLayout()
        layout2.addLayout(layout1)
        layout2.addWidget(label)

        widget = QWidget()
        widget.setLayout(layout2)

        self.setCentralWidget(widget)

        self.spin_boxes = [spin_box1, spin_box2]
        self.label = label

    def on_spin_box_value_changed(self, value):
        total = sum(spin_box.value() for spin_box in self.spin_boxes)
        self.label.setText(str(total))

app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())

这个示例创建了一个带有两个旋转盒和一个标签控件的窗口,当旋转盒的值发生变化时,计算它们的和,并将和显示在标签控件中。