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 應為所需的最大值。

示例 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
廣告
© . All rights reserved.