iT邦幫忙

2024 iThome 鐵人賽

DAY 21
0
Python

pythonGUI學習筆記系列 第 21

Day 21 PySide6 進度條(QProgress)

  • 分享至 

  • xImage
  •  

QProgress

QProgress : 進度條,用於顯示任務的進度,通常用於表示運行中的進度。

添加 QProgress

  • QProgress() : 添加進度條。預設是 0 到 100 。

QProgress 的信號

  • valueChanged.connect(function) : 當 QProgress 的值發生改變時,會觸發信號。下面是當值改變時,觸發信號,使用 setValue(int) 改變進度條,並使用 value() 取得當前進度條的值,列印出當前的數值。
from PySide6.QtWidgets import QApplication, QWidget, QVBoxLayout, QProgressBar
from PySide6.QtCore import QTimer
class MyWindow(QWidget):
    def __init__(self):
        super().__init__()

        # 創建進度條
        self.progress_bar = QProgressBar()
        self.progress_bar.valueChanged.connect(lambda: print(self.progress_bar.value()))

        # 創建QTime
        self.time = QTimer(self)
        self.time.start(100)
        self.time.timeout.connect(self.setProgress)
        self.count = 0

        # 佈局
        layout = QVBoxLayout()
        layout.addWidget(self.progress_bar)
        self.setLayout(layout)

    def setProgress(self):
        self.count  += 1
        self.progress_bar.setValue(self.count)

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

QProgress 常用的功能

  • setFormat(format) : 設定進度條的顯示格式, %p 代表百分比,而 %v 表示實際的數值。
  • setValue(int) : 設定進度條的當前值。
  • setMinimum(int) : 設定進度條的最小值。
  • setMaximum(int) : 設定進度條的最大值。
  • setRange(start , end) : 設定進度條的範圍。
  • reset() : 重製進度條,將進讀條重製到最小值。
  • setOrientation(Qt.Orientation) : 設定進度條的方向,是要垂直還是水平。

下面範例是將進度條格式設定為顯示實際數值,範圍設在 0 到 50 ,並到 50 後就會重製,重新開始。

from PySide6.QtWidgets import QApplication, QWidget, QVBoxLayout, QProgressBar
from PySide6.QtCore import QTimer
class MyWindow(QWidget):
    def __init__(self):
        super().__init__()

        # 創建進度條
        self.progress_bar = QProgressBar()
        self.progress_bar.valueChanged.connect(lambda: print(self.progress_bar.value()))
        self.progress_bar.setRange(0,50)  # 設定範圍為 0 到 50
        self.progress_bar.setFormat("%v") # 設定顯實際數值

        # 創建QTime
        self.time = QTimer(self)
        self.time.start(10)
        self.time.timeout.connect(self.setProgress)
        self.count = 0

        # 佈局
        layout = QVBoxLayout()
        layout.addWidget(self.progress_bar)
        self.setLayout(layout)

    def setProgress(self):
        self.count  += 1
        self.progress_bar.setValue(self.count)
        if self.progress_bar.value() == 50:
            self.progress_bar.reset()
            self.count = 0

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

總結

  • 添加 QProgress
功能 方法
添加進度條 QProgress()

-QProgress 的信號

功能 方法
進度條改變時觸發 valueChanged.connect(function)
功能 方法
添加進度條 setFormat(format)
設定進度條的值 setValue(int)
設定進度條最小值 setMinimum(int)
設定進度條最大值 setMaximum(int)
設定進度條範圍 setRange(start , end)
重製進度條 reset()
設定進度條水平或垂直 setOrientation(Qt.Orientation)

上一篇
Day 20 PySide6 線程(QThread)
下一篇
Day 22 PySide6 子窗口
系列文
pythonGUI學習筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言