
引入相關模組
以下未提及之模組,可以前往以下文章觀看 :
【Python】使用 PyQt5 建構簡單視窗並顯示 “Hello World”
QSlider:
QSlider 是 PyQt 中的一個控件,用來製作滑動條(拉桿),可以讓使用者在一個設定的數值範圍內通過拖動滑塊來選擇數值。PyQt5.QtCore.Qt:
PyQt 中的一個模組,提供許多基礎的定義、常數,用來設定元件的屬性和行為。例如 Qt.AlignCenter 用來設定內容居中顯示。
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QLabel, QSlider
from PyQt5.QtCore import Qt
建立一個世界上最簡單的視窗
# 建立應用程式物件
app = QApplication(sys.argv)
# 建立主視窗
window = QWidget()
window.setWindowTitle("拉桿 Demo")
# 設定視窗大小為 400 x 150
window.resize(400, 150)
# 建立一個垂直佈局管理元件,並與主視窗綁定
layout = QVBoxLayout(window)
建立滑動條(拉桿)
slider = QSlider(Qt.Horizontal, window):
建立一個水平拉桿,Qt.Horizontal 代表水平方向(也可以使用 Qt.Vertical 來變成垂直拉桿)。window 代表這個拉桿屬於哪個視窗。slider.setMinimum(0):
設定拉桿的最小值為 0,表示拉桿最左端代表數值 0。slider.setMaximum(100):
設定拉桿的最大值為 100,表示拉桿最右端代表數值 100。slider.setValue(50):
設定拉桿的初始值為 50,拉桿一開始會停在中間(因為 50 在 0 到 100 之間的中間)。slider.setTickPosition(QSlider.TicksBelow):
在拉桿下方顯示刻度(小標記),讓使用者更容易判斷拉桿的位置。slider.setTickInterval(10):
設定刻度間隔為 10,表示每隔 10 個單位(0, 10, 20, ... 100)就會有一個小標記。layout.addWidget(slider):
將拉桿加入版面配置(layout),這樣拉桿才會顯示在畫面上。
# 建立拉桿
slider = QSlider(Qt.Horizontal, window)  # 水平拉桿
slider.setMinimum(0)  # 設定最小值
slider.setMaximum(100)  # 設定最大值
slider.setValue(50)  # 設定初始值
slider.setTickPosition(QSlider.TicksBelow)  # 在拉桿下方顯示刻度
slider.setTickInterval(10)  # 設定刻度間距
layout.addWidget(slider) # 將拉桿加入版面配置(layout),這樣拉桿才會顯示在畫面上。
顯示視窗
# 顯示視窗
window.show()
# 執行應用程式事件迴圈並確保之後 Python 乾淨地結束程式,釋放所有資源。
sys.exit(app.exec_())

當拉桿數值改變時,更新標籤
現在拉桿已經加入,但尚未顯示對應數值。因此,我們應該在拉桿數值變更時,同步更新標籤的顯示內容,使其更加直觀。
建立標籤並加入布局
# 建立標籤,並與主視窗綁定
label = QLabel("數值: 50", window)
label.setAlignment(Qt.AlignCenter) # 文字置中
layout.addWidget(label)  # 將標籤加入版面配置(layout)。
設定函式 : 當拉桿數值改變時,更新標籤文字內容
當 valueChanged 事件 ( 後續會提到 ) 被觸發時,拉桿的數值會自動作為參數 ( value ) 傳入 updateLabel(value) 函式。
# 當拉桿數值改變時,更新標籤文字內容
def updateLabel(value):
    label.setText(f"數值: {value}") 
監聽拉桿變化
slider.valueChanged:
valueChanged 是 QSlider 的訊號(signal),表示「當拉桿的數值改變時,發送這個訊號」。.connect(updateLabel):
connect() 用來連接一個函式(slot),當 valueChanged 事件發生時,這個函式就會被執行。updateLabel 是一個函式(需要事先定義),負責處理數值變化後的行為。
slider.valueChanged.connect(updateLabel)

完整程式碼
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QLabel, QSlider
from PyQt5.QtCore import Qt
# 建立應用程式物件
app = QApplication(sys.argv)
# 建立主視窗
window = QWidget()
window.setWindowTitle("拉桿 Demo")
# 設定視窗大小為 400 x 150
window.resize(400, 150)
# 建立一個垂直佈局管理元件,並與主視窗綁定
layout = QVBoxLayout(window)
# 建立拉桿
slider = QSlider(Qt.Horizontal, window)  # 水平拉桿
slider.setMinimum(0)  # 設定最小值
slider.setMaximum(100)  # 設定最大值
slider.setValue(50)  # 設定初始值
slider.setTickPosition(QSlider.TicksBelow)  # 在拉桿下方顯示刻度
slider.setTickInterval(10)  # 設定刻度間距
layout.addWidget(slider) # 將拉桿加入版面配置(layout),這樣拉桿才會顯示在畫面上。
# 建立標籤,並與主視窗綁定
label = QLabel("數值: 50", window)
label.setAlignment(Qt.AlignCenter) # 文字置中
layout.addWidget(label)  # 將標籤加入版面配置(layout)。
# 當拉桿數值改變時,更新標籤文字內容
def updateLabel(value):
    label.setText(f"數值: {value}") 
# 監聽拉桿變化
slider.valueChanged.connect(updateLabel)
# 顯示視窗
window.show()
# 執行應用程式事件迴圈並確保之後 Python 乾淨地結束程式,釋放所有資源。
sys.exit(app.exec_())
結語
透過這個範例,學習了如何使用 PyQt5 建立一個包含水平拉桿(QSlider)和標籤(QLabel)的簡單應用程式。透過將拉桿的數值變化與標籤的文字更新連結,實現了即時的互動效果。


