Buy Me a Coffee? Your support is much appreciated!
PayPal Me: https://www.paypal.me/jiejenn/5 Venmo: @Jie-Jenn
Source Code:
import sys import time from PyQt6.QtWidgets import QApplication, QWidget, QProgressBar, QPushButton, \ QHBoxLayout, QVBoxLayout from PyQt6.QtGui import QIcon class ProgressBar(QProgressBar): def __init__(self, parent=None): super().__init__(parent) self.setMaximum(100) self._active = False def updateBar(self, i): while True: time.sleep(0.01) value= self.value() + i self.setValue(value) if value >= 50: self.changeColor('green') if value >= self.maximum() or self._active: self.setValue(100) break elif value >= self.maximum() or not self._active: break def changeColor(self, color): css = """ ::chunk {{ background: {0}; }} """.format(color) self.setStyleSheet(css) class MyApp(QWidget): def __init__(self): super().__init__() self.window_width, self.window_height = 800, 200 self.resize(self.window_width, self.window_height) self.setWindowTitle('ProgressBar Template') self.setWindowIcon(QIcon('qt.ico')) self.setStyleSheet(""" QWidget { background-color: #323232; font-size: 20px; color: #b1b1b1; } QPushButton { height: 45px; background-color: QLinearGradient( x1: 0, x2: 0, y1: 0, y2: 1, stop: 0 #565656, stop: 0.1 #525252, stop: 0.5 #4e4e4e, stop: 0.9 #4a4a4a, stop: 1.0 #464646 ); border-width: 4.5px; border-color: #1e1e1e; border-style: solid; border-radius: 3px; padding: 5px; padding-left: 10px; padding-right: 10px; } QPushButton:pressed { background-color: orange; color: white; } QPushButton:hover { border-color: orange; border-color: white; } QProgressBar { border-style: solid; border-color: grey; border-radius: 7px; border-width: 2px; text-align: center; } QProgressBar::chunk { width: 2px; background-color: #de7c09; margin: 3px; } """) self.layout = QVBoxLayout() self.setLayout(self.layout) self.progressBar = ProgressBar() self.layout.addWidget(self.progressBar) self.button = QPushButton('Update ProressBar', clicked=self.updateProgressBar) self.layout.addWidget(self.button) def updateProgressBar(self): i = 10 self.progressBar.updateBar(i) if __name__ == '__main__': # don't auto scale when drag app to a different monitor. # QGuiApplication.setHighDpiScaleFactorRoundingPolicy(Qt.HighDpiScaleFactorRoundingPolicy.PassThrough) app = QApplication(sys.argv) myApp = MyApp() myApp.show() try: sys.exit(app.exec()) except SystemExit: print('Closing Window...')