PyQt - QDoubleSpinBox 组件



PyQt 中的 QDoubleSpinBox 组件用于输入指定范围内的浮点数。它继承自 QAbstractSpinBox,后者又继承自 Qwidgets。它支持各种功能,包括键盘和鼠标交互、验证和舍入行为。

QDoubleSpinBox 的主要特性

  • 精度控制 − 开发者可以指定要显示的小数位数。这提供了对浮点数精度的控制。
  • 范围指定 − 可以设置允许的最小值和最大值,定义用户输入的理想范围。
  • 键盘和鼠标交互 − 用户可以使用键盘箭头键或鼠标滚轮与 QDoubleSpinBox 交互,以增加或减少值。
  • 信号和槽 − PyQt6 提供了一个信号 (valueChanged),可以将其连接到一个槽,以便在值更改时执行操作。
  • 本地化数字显示 − QDoubleSpinBox 使用区域设置,确保根据用户的区域设置显示小数分隔符和分组字符。

设置最大值

要设置 QDoubleSpinBox 中的最大值,可以使用 setMaximum() 方法。此方法接受单个参数 – 您希望允许用户输入的最大值。通过设置最大值,您可以限制用户输入或选择超过指定限制的值。

语法

语法如下:

your_double_spin_box.setMaximum(max_value)

这里,your_double_spin_box 应替换为您实际的 QDoubleSpinBox 对象名称,而 max_value 应为所需的最大值。

Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.

示例 1:QDoubleSpinBox 的基本实现

在下面的示例中,我们创建了 PyQt6 应用程序的基本实现,其中包含 QDoubleSpinBox 组件和 QLabel。QDoubleSpinBox 允许用户在 0100 范围内选择浮点数值,并且所选值将显示在 QLabel 中。

import sys from PyQt6.QtWidgets import QApplication, QMainWindow, QDoubleSpinBox, QLabel, QVBoxLayout, QWidget class MainWindow(QMainWindow): def __init__(self): super().__init__() self.init_ui() def init_ui(self): central_widget = QWidget(self) self.setCentralWidget(central_widget) layout = QVBoxLayout() self.double_spin_box = QDoubleSpinBox(self) self.double_spin_box.setMinimum(0) self.double_spin_box.setMaximum(100) # Setting the maximum value to 100 self.label = QLabel(self) self.label.setText("Selected value: ") layout.addWidget(self.double_spin_box) layout.addWidget(self.label) central_widget.setLayout(layout) self.double_spin_box.valueChanged.connect(self.update_label) def update_label(self, value): self.label.setText(f"Selected value: {value}") if __name__ == "__main__": app = QApplication(sys.argv) window = MainWindow() window.show() sys.exit(app.exec())

输出

以上代码产生以下结果:

pyqt qdoublespinbox example 1

示例 2:自定义最大值

在下面的示例中,QDoubleSpinBox 的最大值自定义为 50,允许用户在 -5050 范围内选择值。与示例 1 类似,所选值显示在 QLabel 中。

import sys from PyQt6.QtWidgets import QApplication, QMainWindow, QDoubleSpinBox, QLabel, QVBoxLayout, QWidget class MainWindow(QMainWindow): def __init__(self): super().__init__() self.init_ui() def init_ui(self): central_widget = QWidget(self) self.setCentralWidget(central_widget) layout = QVBoxLayout() self.double_spin_box = QDoubleSpinBox(self) self.double_spin_box.setMinimum(-50) self.double_spin_box.setMaximum(50) # Setting the maximum value to 50 self.label = QLabel(self) self.label.setText("Selected value: ") layout.addWidget(self.double_spin_box) layout.addWidget(self.label) central_widget.setLayout(layout) self.double_spin_box.valueChanged.connect(self.update_label) def update_label(self, value): self.label.setText(f"Selected value: {value}") if __name__ == "__main__": app = QApplication(sys.argv) window = MainWindow() window.show() sys.exit(app.exec())

输出

执行以上代码后,我们将得到以下结果:

pyqt qdoublespinbox example 2

示例 3:处理大范围

在下面的示例中,我们展示了 QDoubleSpinBox 通过将最大值设置为 1000 来处理更大范围的能力。用户可以在 01000 范围内选择值,并且所选值会在 QLabel 中实时更新。

import sys from PyQt6.QtWidgets import QApplication, QMainWindow, QDoubleSpinBox, QLabel, QVBoxLayout, QWidget class MainWindow(QMainWindow): def __init__(self): super().__init__() self.init_ui() def init_ui(self): central_widget = QWidget(self) self.setCentralWidget(central_widget) layout = QVBoxLayout() self.double_spin_box = QDoubleSpinBox(self) self.double_spin_box.setMinimum(0) self.double_spin_box.setMaximum(1000) # Setting the maximum value to 1000 self.label = QLabel(self) self.label.setText("Selected value: ") layout.addWidget(self.double_spin_box) layout.addWidget(self.label) central_widget.setLayout(layout) self.double_spin_box.valueChanged.connect(self.update_label) def update_label(self, value): self.label.setText(f"Selected value: {value}") if __name__ == "__main__": app = QApplication(sys.argv) window = MainWindow() window.show() sys.exit(app.exec())

输出

执行以上代码后,我们将得到以下结果:

pyqt qdoublespinbox example 3
广告