PyQt QSpinBox
最后修改于 2023 年 8 月 24 日
在本文中,我们将展示如何使用 QSpinBox 组件。
源代码可在 PyQt-Examples 仓库中找到。访问 ,阅读 PyQt5 教程,或列出所有 PyQt 教程。
QSpinBox
QSpinBox
用于处理整数和离散值集合。它允许用户通过点击向上/向下按钮或按键盘上的向上/向下键来增加/减少当前显示的值。该值也可以手动输入。
微调框的范围可以通过 setRange
或 setMinimum
和 setMaximum
函数来设置。步长值由 setSingleStep
指定。
每当微调框的值改变时,都会发出 valueChanged
信号。value
函数用于获取当前值。
PyQt QSpinBox 示例
下面是一个使用 QSpinBox
的简单示例。
spinbox.py
#!/usr/bin/python from PyQt5.QtWidgets import (QWidget, QSpinBox, QHBoxLayout, QLabel, QApplication) import sys class Example(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): hbox = QHBoxLayout() sbox = QSpinBox(self) sbox.valueChanged.connect(self.updateLabel) self.label = QLabel('0', self) hbox.addWidget(sbox) hbox.addSpacing(15) hbox.addWidget(self.label) self.setLayout(hbox) self.setGeometry(300, 300, 350, 250) self.setWindowTitle('QSpinBox') self.show() def updateLabel(self, value): self.label.setText(str(value)) def main(): app = QApplication(sys.argv) ex = Example() sys.exit(app.exec_()) if __name__ == '__main__': main()
从 QSpinBox
中选择的值会显示在旁边的 QLabel
中。
sbox.valueChanged.connect(self.updateLabel)
当用户选择一个不同的值时,会发出 valueChanged
信号。我们将 updateLabel
处理程序连接到该信号。
def updateLabel(self, value): self.label.setText(str(value))
在 updateLabel
处理程序中,我们将微调框的值设置到标签上。

QSpinBox 的范围、步长和后缀
在下面的示例中,我们探索 QSpinBox
的其他功能。
spinbox2.py
#!/usr/bin/python from PyQt5.QtWidgets import (QWidget, QSpinBox, QHBoxLayout, QLabel, QApplication) import sys class Example(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): hbox = QHBoxLayout() sbox = QSpinBox(self) sbox.setRange(0, 200) sbox.setSingleStep(5) sbox.setSuffix(' km') sbox.valueChanged.connect(self.updateLabel) self.label = QLabel('0', self) hbox.addWidget(sbox) hbox.addSpacing(15) hbox.addWidget(self.label) self.setLayout(hbox) self.setGeometry(300, 300, 350, 250) self.setWindowTitle('QSpinBox') self.show() def updateLabel(self, value): self.label.setText(str(value)) def main(): app = QApplication(sys.argv) ex = Example() sys.exit(app.exec_()) if __name__ == '__main__': main()
在该示例中,我们设置了微调框的范围、步长和后缀。
sbox = QSpinBox(self) sbox.setRange(0, 200) sbox.setSingleStep(5) sbox.setSuffix(' km')
范围通过 setRange
设置,步长通过 setSingleStep
设置,后缀通过 setSuffix
设置。

QSpinBox 的值
value
函数返回 QSpinBox
的当前值。
show_value.py
#!/usr/bin/python from PyQt5.QtWidgets import (QWidget, QSpinBox, QHBoxLayout, QMessageBox, QPushButton, QApplication, QSizePolicy) import sys class Example(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): hbox = QHBoxLayout() self.sbox = QSpinBox(self) btn = QPushButton('Show', self) btn.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) btn.clicked.connect(self.showSpinboxValue) hbox.addWidget(self.sbox) hbox.addSpacing(15) hbox.addWidget(btn) self.setLayout(hbox) self.setGeometry(300, 300, 350, 250) self.setWindowTitle('QSpinBox') self.show() def showSpinboxValue(self): val = self.sbox.value() QMessageBox.information(self, 'Value', f'Value: {val}') def main(): app = QApplication(sys.argv) ex = Example() sys.exit(app.exec_()) if __name__ == '__main__': main()
在该示例中,我们有一个微调框和一个按钮。点击按钮会显示一个消息框,其中显示了微调框的当前值。
def showSpinboxValue(self): val = self.sbox.value() QMessageBox.information(self, 'Value', f'Value: {val}')
我们使用 value
获取当前值,并将其显示在消息框中。
在本文中,我们学习了如何使用 PyQt 的 QSpinBox
。
作者
列出所有 PyQt 教程。