Resumo : neste tutorial, você aprenderá como usar a QProgressBar
classe 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 QProgressBar
classe:
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 QProgressBar
classe 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_value
for 50, a porcentagem de etapas será 50%. A barra de progresso exibirá o progresso assim:
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 QProgressBar
classe 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.
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 QProgressBar
classe:
self.progress_bar = QProgressBar(self)
Linguagem de código: Python ( python )
Segundo, inicialize o valor atual:
self.current_value = 0
Linguagem 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
método para redefinir a barra de progresso no reset()
método:reset()
def reset(self):
self.current_value = 0
self.progress_bar.reset()
Linguagem de código: Python ( python )
Resumo
- Use a
QProgressBar
classe 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.