PyQt QProgressBar

Resumo : neste tutorial, você aprenderá como usar a QProgressBarclasse PyQt para criar um widget de barra de progresso.

Introdução ao PyQt QProgressBar

Um widget de barra de progresso notifica os usuários sobre o andamento de uma operação e garante que o programa ainda está em execução.

Para criar um widget de barra de progresso, você usa a QProgressBarclasse:

QProgressBar()Linguagem de código:  Python  ( python )

Uma barra de progresso tem três valores importantes:

  • O valor mínimo.
  • O valor máximo.
  • O valor da etapa atual.

Por padrão, o valor mínimo é zero e o valor máximo é 100.

Para atualizar o progresso, aumente o valor da etapa atual. Ao fazer isso, a barra de progresso exibirá a porcentagem de etapas concluídas.

A QProgressBarclasse usa a seguinte fórmula para calcular o andamento das etapas:

(current_value - minimum ) / (maximum - minimum)Linguagem de código:  Python  ( python )

Por exemplo, se current_valuefor 50, a porcentagem de etapas será 50%. A barra de progresso exibirá o progresso assim:

Exemplo PyQt QProgressBar

Para definir o valor da etapa atual, você usa o setValue()método. Para obter o valor atual, você usa o value()método. Para redefinir a barra de progresso para que ela não mostre nenhum progresso, você usa o reset()método.

Se não quiser substituir os valores mínimo e máximo padrão, você pode usar os métodos setMinimum()e setMaximum()para alterá-los.

Além disso, você pode usar o setRange()método para definir os valores mínimo e máximo de uma só vez:

setRange(minimum, maximum)Linguagem de código:  Python  ( python )

Para obter os valores mínimo e máximo, você usa os métodos minimum()e maximum().

Na prática, você usará o widget da barra de progresso com threads para atualizar o progresso de operações de longa duração

Exemplo PyQt QProgressBar

O exemplo a seguir usa a QProgressBarclasse para criar uma barra de progresso.

Se você clicar no botão de progresso, o valor atual aumentará para o valor máximo. No entanto, se você clicar no botão de redefinição, a barra de progresso será redefinida.

PyQt QProgressBar - Exemplo de programa
import sys
from PyQt6.QtWidgets import QApplication, QWidget, QLabel, QPushButton, QVBoxLayout, QHBoxLayout, QProgressBar
from PyQt6.QtCore import Qt


class MainWindow(QWidget):

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        self.setGeometry(100, 100, 300, 50)
        self.setWindowTitle('QProgressBar Demo')

        layout = QVBoxLayout()
        self.setLayout(layout)

        hbox = QHBoxLayout()
        self.progress_bar = QProgressBar(self)
        hbox.addWidget(self.progress_bar)

        layout.addLayout(hbox)

        hbox = QHBoxLayout()
        self.btn_progress = QPushButton('Progress', clicked=self.progress)
        self.bnt_reset = QPushButton('Reset', clicked=self.reset)

        # align buttons center
        hbox.addStretch()
        hbox.addWidget(self.btn_progress)
        hbox.addWidget(self.bnt_reset)
        hbox.addStretch()
        
        layout.addLayout(hbox)
        self.current_value = 0
        self.show()

    def reset(self):
        self.current_value = 0
        self.progress_bar.reset()

    def progress(self):
        if self.current_value  <= self.progress_bar.maximum():
            self.current_value += 5
            self.progress_bar.setValue(self.current_value)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = MainWindow()
    sys.exit(app.exec())
Linguagem de código:  Python  ( python )

Como funciona.

Primeiro, crie uma barra de progresso usando a QProgressBarclasse:

self.progress_bar = QProgressBar(self)Linguagem de código:  Python  ( python )

Segundo, inicialize o valor atual:

self.current_value = 0Linguagem de código:  Python  ( python )

Terceiro, aumente o valor atual em 5 e atualize-o como o valor atual usando setValue()para a barra de progresso no progress()método:

def progress(self):
    if self.current_value  <= self.progress_bar.maximum():
        self.current_value += 5
        self.progress_bar.setValue(self.current_value)Linguagem de código:  Python  ( python )

Por fim, redefina o valor atual e chame o reset()método para redefinir a barra de progresso no reset()método:

def reset(self):
    self.current_value = 0
    self.progress_bar.reset()Linguagem de código:  Python  ( python )

Resumo

  • Use a QProgressBarclasse para criar widgets de barra de progresso.
  • Use setValue()para definir o valor atual que reflete a porcentagem do progresso atual.
  • Use o reset()método para redefinir a barra de progresso para que ela não mostre nenhum progresso.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *