Balkenfarbe einer `QProgressBar` selbst festlegen.

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
Atalanttore
User
Beiträge: 324
Registriert: Freitag 6. August 2010, 17:03

Sonntag 14. April 2019, 21:33

Hallo

Ich würde gerne die Balkenfarbe einer `QProgressBar` ändern, aber es wird leider nur die Angabe zur Hintergrundfarbe im Stylesheet beachtet. Als Balkenfarbe wird immer ein Türkiston verwendet.

Stylesheet:

Code: Alles auswählen

color: rgb(255, 0, 0);
background-color: rgb(0, 0, 255);
Gruß
Atalanttore
Atalanttore
User
Beiträge: 324
Registriert: Freitag 6. August 2010, 17:03

Montag 15. April 2019, 14:58

Beim Nachschauen habe ich herausgefunden, dass das Attribut `color` dafür vorgesehen ist - was in meinem Fall von Qt leider nicht beachtet wird.

Gruß
Atalanttore
__deets__
User
Beiträge: 5519
Registriert: Mittwoch 14. Oktober 2015, 14:29

Montag 15. April 2019, 15:09

Also geht es nicht mit den Links die ich gezeigt habe, oder wie soll ich deine Antwort verstehen?
Atalanttore
User
Beiträge: 324
Registriert: Freitag 6. August 2010, 17:03

Montag 15. April 2019, 15:10

Wie in den Links beschrieben funktioniert es bei mir leider nicht. :cry:

Gruß
Atalanttore
__deets__
User
Beiträge: 5519
Registriert: Mittwoch 14. Oktober 2015, 14:29

Montag 15. April 2019, 15:12

Dann habe ich da auch keine weitere Loesung fuer. Ausser in den Quellcode von QProgressBar schauen & gucken, ob man es daraus ableiten kann.
Atalanttore
User
Beiträge: 324
Registriert: Freitag 6. August 2010, 17:03

Dienstag 16. April 2019, 21:17

Ich habe mittlerweile einen noch einigermaßen eleganten Weg gefunden, wie man die Balkenfarbe einer `QProgressBar` selbst festlegen kann. Es funktioniert mit einer eigenen `QPalette` dafür.

main.py:

Code: Alles auswählen

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.uic import loadUi
from PyQt5.QtGui import QPalette
from PyQt5.QtCore import Qt


class MainWindow(QMainWindow):

    def __init__(self, parent=None):
        super().__init__(parent)
        loadUi("mainwindow.ui", self)


        palette = QPalette(self.palette())
        palette.setColor(QPalette.Highlight, Qt.yellow)
        self.progressBar.setPalette(palette)


def main():
    app = QApplication(sys.argv)
    main_window = MainWindow()
    main_window.show()
    sys.exit(app.exec_())


if __name__ == "__main__":
    main()

mainwindow.ui:

Code: Alles auswählen

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>MainWindow</class>
 <widget class="QMainWindow" name="MainWindow">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>800</width>
    <height>600</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>MainWindow</string>
  </property>
  <widget class="QWidget" name="centralwidget">
   <widget class="QProgressBar" name="progressBar">
    <property name="geometry">
     <rect>
      <x>30</x>
      <y>110</y>
      <width>671</width>
      <height>25</height>
     </rect>
    </property>
    <property name="styleSheet">
     <string notr="true">background-color: rgb(78, 154, 6);</string>
    </property>
    <property name="value">
     <number>25</number>
    </property>
   </widget>
  </widget>
  <widget class="QMenuBar" name="menubar">
   <property name="geometry">
    <rect>
     <x>0</x>
     <y>0</y>
     <width>800</width>
     <height>28</height>
    </rect>
   </property>
  </widget>
  <widget class="QStatusBar" name="statusbar"/>
 </widget>
 <resources/>
 <connections/>
</ui>
Gruß
Atalanttore
Antworten