iT邦幫忙

2024 iThome 鐵人賽

DAY 12
0
Python

pythonGUI學習筆記系列 第 12

Day 12: PySide6 滑動條(QSlider)和QSpinBox數值調整元件

  • 分享至 

  • xImage
  •  

滑動條(QSlider) 和 數值調整(QSpinBox)元件

  • QSlider 滑動條 : 提供一個可拖動的條形元件,用來選擇數值範圍內的一個值,通常應用於音量控制或進度條等場景。可以水平或垂直顯示。

  • QSpinBox 數值調整 : 提供一個上下按鈕的控件,允許用戶通過點擊按鈕或直接輸入來增加或減少一個數值,常用於設置數值範圍內的整數,應用於選擇數量或尺寸。

1. QSlider 使用

QSlider 添加

  • QSlider() : 可以搭配QT.Orientation設定成垂直會水平。
from PySide6.QtWidgets import QApplication , QWidget , QSlider , QVBoxLayout
from PySide6.QtCore import Qt

class Mywindow(QWidget):
    def __init__(self):
        super().__init__()

        Slider = QSlider(Qt.Orientation.Horizontal)
        Slider2 = QSlider(Qt.Orientation.Vertical)

        layout = QVBoxLayout()
        layout.addWidget(Slider)
        layout.addWidget(Slider2)
        self.setLayout(layout)

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

添加圖片

QSlider 常用的信號

  • valueChanged.connect(function) : 當值改變時觸發信號。下面範例是滑條狀態改變時,列印出當前數值。
from PySide6.QtWidgets import QApplication , QWidget , QSlider , QVBoxLayout , QLabel

class Mywindow(QWidget):
    def __init__(self):
        super().__init__()

        Slider = QSlider()
        Slider.valueChanged.connect(lambda: print(Slider.value()))

        layout = QVBoxLayout()
        layout.addWidget(Slider)
        self.setLayout(layout)

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

QSlider 常用的功能

  • setValue(int) : 設置數值。
  • setTickInterval(int) : 設置刻度間隔。
  • TickPosition(QSlider.TickPosition) : 刻度指標的位置。
    下面範例是將範圍設定在0到100,初始值設置50,並把刻度指標放在下面,每五為一個間隔。
from PySide6.QtWidgets import QApplication , QWidget , QSlider , QVBoxLayout , QLabel
from PySide6.QtCore import Qt
class Mywindow(QWidget):
    def __init__(self):
        super().__init__()


        Slider = QSlider(Qt.Orientation.Horizontal)
        Slider.setRange(0,100)
        Slider.setValue(50)
        Slider.setTickInterval(5)
        Slider.setTickPosition(QSlider.TickPosition.TicksBelow)

        layout = QVBoxLayout()
        layout.addWidget(Slider)
        self.setLayout(layout)

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

滑條常用功能

2. QSpinBox 使用

QSpinBox 添加

  • QSpinBox() : 數值調整元件。如果要用小數點則需要引入QDoubleSpinBox()元件使用。下面是添加一個QSpinBox的範例。
from PySide6.QtWidgets import QApplication , QWidget , QSpinBox , QVBoxLayout
class Mywindow(QWidget):
    def __init__(self):
        super().__init__()

        SpinBox = QSpinBox()

        layout = QVBoxLayout()
        layout.addWidget(SpinBox)
        self.setLayout(layout)

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

https://ithelp.ithome.com.tw/upload/images/20240921/20169254FeZLtBEUbj.png

QSpinBox 常用的信號

  • valueChanged.connect(function) : 當數值改變時,觸發信號。下面是當數值改變時,會列印出當前的數值
from PySide6.QtWidgets import QApplication , QWidget , QSpinBox , QVBoxLayout
class Mywindow(QWidget):
    def __init__(self):
        super().__init__()

        SpinBox = QSpinBox()
        SpinBox.valueChanged.connect(lambda:print(SpinBox.value()))

        layout = QVBoxLayout()
        layout.addWidget(SpinBox)
        self.setLayout(layout)

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

QSpinBox 常用的功能

  • setValue(int or float) : 設置數值。
  • SpinBox.setSingleStep(int or float) : 設定調整時數值的差距
    下面範例是將範圍設定在0到50,並一次調整間隔為5,初始值為25。
from PySide6.QtWidgets import QApplication , QWidget , QSpinBox , QVBoxLayout
class Mywindow(QWidget):
    def __init__(self):
        super().__init__()

        SpinBox = QSpinBox()
        SpinBox.setRange(0,50)
        SpinBox.setValue(25)
        SpinBox.setSingleStep(5)

        layout = QVBoxLayout()
        layout.addWidget(SpinBox)
        self.setLayout(layout)

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

總結

1. 日期調整元件(QSlider)

  • QSlider 添加按鈕
功能 方法
添加元件 QSlider()
  • QSlider 常用的信號
功能 方法
數值更改時觸發信號 valueChanged.connect(function)
  • QSlider 常用的功能
功能 方法
設定初始數值 setValue(int)
設定刻度間隔 setTickInterval(int)
刻度指標的位置 TickPosition(QSlider.TickPosition)
設定範圍 setRange(start,end)
獲得當前數值 value()

2. 時間調整(QSpinBox)元件

  • QSpinBox 添加
功能 方法
添加元件(int) QSpinBox()
添加元件(float) QDoubleSpinBox()
  • QSpinBox 常用的信號
功能 方法
數值更改時觸發信號 valueChanged.connect(function)
  • QSpinBox 常用的功能
功能 方法
設定初始數值 setValue(int or float)
設定調整時數局差距 SpinBox.setSingleStep(int or float)
設定範圍 setRange(start,end)
獲得當前數值 value()

上一篇
Day 11: PySide6 日期調整 (QDateEdit)和時間調整(QTimeEdit)元件
下一篇
Day 13: Pyside6 列表(QListWidget) (一) 增刪改查和信號
系列文
pythonGUI學習筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言