📅  最后修改于: 2023-12-03 15:18:41.423000             🧑  作者: Mango
在GUI应用程序中,进度条是非常有用的界面元素。在PyQt5中,我们可以使用QProgressBar控件来实现进度条。本文将介绍如何使用PyQt5创建一个带有透明背景的QProgressBar控件。
from PyQt5.QtCore import Qt, QBasicTimer
from PyQt5.QtGui import QBrush, QColor, QPainter, QPen
from PyQt5.QtWidgets import QApplication, QWidget, QProgressBar
class TransparentProgressBar(QProgressBar):
def __init__(self, parent=None):
super().__init__(parent)
self._value = 0
self._color = QColor(255, 69, 0)
def setValue(self, value):
self._value = value
self.update()
def setColor(self, color):
self._color = color
def paintEvent(self, event):
painter = QPainter(self)
painter.setRenderHint(QPainter.Antialiasing)
painter.setPen(QPen(Qt.NoPen))
# 绘制底部部分
brush = QBrush(self.palette().color(QPalette.Base))
painter.setBrush(brush)
painter.drawRoundedRect(0, 0, self.width(), self.height(), self.height() // 2, self.height() // 2)
# 绘制进度部分
brush = QBrush(self._color)
painter.setBrush(brush)
progress_width = self.width() * self._value // 100
painter.drawRoundedRect(0, 0, progress_width, self.height(), self.height() // 2, self.height() // 2)
transparent_progress_bar = TransparentProgressBar()
transparent_progress_bar.setStyleSheet('QProgressBar::chunk {background-color: transparent}')
transparent_progress_bar.setValue(50)
透明背景进度条是一个非常实用的控件,可以为用户提供更好的用户体验。在PyQt5中实现透明背景进度条的方法非常简单,只需要覆盖QProgressBar的paintEvent方法即可。