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 教程。