PyQt - QSpinBox 控制元件



QSpinBox 物件向用戶呈現一個文字框,其中顯示一個整數,其右側帶有向上/向下按鈕。如果按下向上/向下按鈕,則文字框中的值會增加/減少。

預設情況下,框中的整數從 0 開始,到 99 結束,步長為 1。對於浮點值,請使用 QDoubleSpinBox。

QSpinBox 控制元件中使用的方法

QSpinBox 類的重要方法列在下表中:

序號 方法及描述
1

setMinimum()

設定計數器的下限

2

setMaximum()

設定計數器的上限

3

setRange()

設定最小值、最大值和步長值

4

setValue()

以程式設計方式設定微調框的值

5

value()

返回當前值

6

singleStep()

設定計數器的步長值

每次按下向上/向下按鈕時,QSpinBox 物件都會發出 valueChanged() 訊號。關聯的槽函式可以透過 value() 方法檢索視窗小部件的當前值。

QSpinBox 的基本結構

在進入示例之前,讓我們瞭解一下 QSpinBox 控制元件的基本結構。

在此程式碼片段中,我們建立一個具有 QSpinBox 控制元件的 PyQt 視窗。接下來,我們使用 setMinimum() 和 setMaximum() 函式定義微調框的上限。此外,我們使用 setValue() 初始化微調框的起始值。

from PyQt6.QtWidgets import QApplication, QMainWindow, QSpinBox

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

      self.setWindowTitle("Basic QSpinBox Example")
      self.setGeometry(200, 200, 300, 200)

      spinbox = QSpinBox(self)
      spinbox.move(100, 50)
      spinbox.setMinimum(0)
      spinbox.setMaximum(100)
      spinbox.setValue(50)

if __name__ == "__main__":
   app = QApplication([])
   window = MyWindow()
   window.show()
   app.exec()

輸出

以上程式碼產生以下輸出:

pyqt qspinBox basic usage

示例 1:自定義 QSpinBox

在下面的示例中,我們展示了 QSpinBox 控制元件的自定義選項。我們將最小值和最大值分別設定為 -100 和 100。此外,我們使用 setSingleStep() 調整遞增或遞減值的步長。

from PyQt6.QtWidgets import QApplication, QMainWindow, QSpinBox

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

      self.setWindowTitle("Customized QSpinBox Example")
      self.setGeometry(200, 200, 300, 200)

      spinbox = QSpinBox(self)
      spinbox.move(100, 50)
      spinbox.setMinimum(-100)
      spinbox.setMaximum(100)
      spinbox.setSingleStep(5)
      spinbox.setValue(0)

if __name__ == "__main__":
   app = QApplication([])
   window = MyWindow()
   window.show()
   app.exec()   

輸出

以上程式碼產生以下輸出:

pyqt qspinBox example 1

示例 2:QSpinBox 訊號處理

在這個例子中,我們將 QSpinBox 控制元件的 valueChanged 訊號連線到自定義槽 on_value_changed。每當微調框中的值發生變化時,此槽都會使用 QLabel 更新當前選定的值。

from PyQt6.QtWidgets import QApplication, QMainWindow, QSpinBox, QLabel

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

      self.setWindowTitle("QSpinBox Signal Handling Example")
      self.setGeometry(200, 200, 300, 200)

      spinbox = QSpinBox(self)
      spinbox.move(100, 50)
      spinbox.setMinimum(0)
      spinbox.setMaximum(100)
      spinbox.valueChanged.connect(self.on_value_changed)

      self.label = QLabel(self)
      self.label.move(100, 100)
      self.label.setText("Selected Value: 0")

   def on_value_changed(self, value):
      self.label.setText(f"Selected Value: {value}")

if __name__ == "__main__":
   app = QApplication([])
   window = MyWindow()
   window.show()
   app.exec()

輸出

以上程式碼產生以下輸出:

pyqt qspinBox example 2
廣告
© . All rights reserved.