- PyQt5 教程
- PyQt5 - 首頁
- PyQt5 - 簡介
- PyQt5 - 新特性
- PyQt5 - Hello World
- PyQt5 - 主要類
- PyQt5 - 使用 Qt Designer
- PyQt5 - 訊號 & 槽
- PyQt5 - 佈局管理
- PyQt5 - 基本控制元件
- PyQt5 - QDialog 類
- PyQt5 - QMessageBox
- PyQt5 - 多文件介面
- PyQt5 - 拖放
- PyQt5 - 資料庫處理
- PyQt5 - 繪圖 API
- PyQt5 - BrushStyle 常量
- PyQt5 - QClipboard
- PyQt5 - QPixmap 類
- PyQt5 有用資源
- PyQt5 - 快速指南
- PyQt5 - 有用資源
- PyQt5 - 討論
PyQt5 - QSlider 控制元件 & 訊號
QSlider 類物件為使用者提供了一個槽,使用者可以在該槽上移動一個滑塊。它是一個控制有界值的經典控制元件。滑塊在槽上的位置等效於控制元件下限和上限之間的整數。
透過在建構函式中指定方向,可以水平或垂直顯示滑塊控制元件。
self.sp = QSlider(Qt.Horizontal) self.sp = QSlider(Qt.Vertical)
下表列出了 QSlider 類的一些常用方法:
| 序號 | 方法 & 描述 | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 |
setMinimum() 設定滑塊的下限 |
||||||||||||
| 2 |
setMaximum() 設定滑塊的上限 |
||||||||||||
| 3 |
setSingleStep() 設定增量/減量步長 |
||||||||||||
| 4 |
setValue() 以程式設計方式設定控制元件的值 |
||||||||||||
| 5 |
value() 返回當前值 |
||||||||||||
| 6 |
setTickInterval() 在槽上設定刻度的數量 |
||||||||||||
| 7 |
setTickPosition() 將刻度放置在槽上。值如下:
|
QSlider 訊號
以下是 QSlider 訊號中的方法:
| 序號 | 方法 & 描述 |
|---|---|
| 1 |
valueChanged() 當滑塊的值發生變化時 |
| 2 |
sliderPressed() 當用戶開始拖動滑塊時 |
| 3 |
sliderMoved() 當用戶拖動滑塊時 |
| 4 |
sliderReleased() 當用戶釋放滑塊時 |
valueChanged() 訊號是最常使用的訊號。
示例
以下示例演示了上述功能。一個標籤和一個水平滑塊放置在垂直佈局中。滑塊的 valueChanged() 訊號連線到 valuechange() 方法。
self.sl.valueChanged.connect(self.valuechange)
槽函式 valuechange() 讀取滑塊的當前值,並將其用作標籤標題的字型大小。
size = self.sl.value()
self.l1.setFont(QFont("Arial",size))
完整的程式碼如下:
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class sliderdemo(QWidget):
def __init__(self, parent = None):
super(sliderdemo, self).__init__(parent)
layout = QVBoxLayout()
self.l1 = QLabel("Hello")
self.l1.setAlignment(Qt.AlignCenter)
layout.addWidget(self.l1)
self.sl = QSlider(Qt.Horizontal)
self.sl.setMinimum(10)
self.sl.setMaximum(30)
self.sl.setValue(20)
self.sl.setTickPosition(QSlider.TicksBelow)
self.sl.setTickInterval(5)
layout.addWidget(self.sl)
self.sl.valueChanged.connect(self.valuechange)
self.setLayout(layout)
self.setWindowTitle("SpinBox demo")
def valuechange(self):
size = self.sl.value()
self.l1.setFont(QFont("Arial",size))
def main():
app = QApplication(sys.argv)
ex = sliderdemo()
ex.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
輸出
以上程式碼產生以下輸出:
隨著滑塊的滑塊在滑塊上移動,標籤的字型大小也會發生變化。
pyqt_basic_widgets.htm
廣告