Seite 1 von 1

stylesheet background image resize

Verfasst: Sonntag 16. Februar 2020, 14:58
von Ernie1412
Hallo !
ich will ein Butten mit einem Bild hinterlegen.
ich benutze QT Designer den Style Sheet Editor wie folgt:

Code: Alles auswählen

QPushButton {
background-image: url('C:/Users/erni1/Desktop/Python/MeinProgramm/ui/graphics/Scan_Grün.png');
background-size: cover;
background-color: transparent;
}
wie kann ich den den Pfad relativ wählen also wenn die *.ui in MeinProgramm/ui ist muss ich vom *.py ausgehen oder wo die *.ui sind `?
ich hab alles ausprobiert. irgendwie geht nur komplette Ordner Pfad.

2. Problem:
Das Bild ist 255x255pixel
wie kriege ich das zentral in 100x100 PushButton hin.
in dem Fall zeigt er mir nur im rechten unteren Eck ein Stück vom Bild
Bild
Danke

Re: stylesheet background image resize

Verfasst: Sonntag 16. Februar 2020, 15:12
von __deets__
Man findet zwei Loesungen zu deinem ersten Problem: das Stylesheet mit Variablen zu versehen, und die vorm setzen zu ersetzen. Also sowas wie

url('{BASEPATH}/ui/graphics/Scan.png')

und dann zur Laufzeit den BASEPATH bestimmen, und im Text ersetzen. Erst dann das Stylesheet setzen, dann mit korrekten absoluten Pfaden.

Die Alternative ist der resource-compiler von Qt, der wohl auch fuer Python verfuegbar ist laut https://stackoverflow.com/questions/366 ... -pyqt-code

Damit kannst du deine Resourcen in ein Python-File stopfen, und wenn das importiert ist, kannst du danach im Stylesheet mit url(":/pfad/zum/Png.png") arbeiten - das :/ bedeutet, dass das Ding aus dem QRC geladen wurden.

Zu dem anderen Problem kann ich nichts sagen.

Re: stylesheet background image resize

Verfasst: Sonntag 16. Februar 2020, 19:28
von Ernie1412

Code: Alles auswählen

self.Lese.setStyleSheet('#LeseButton {background-image: url(C:/Users/erni1/Desktop/Python/MeinProgramm/graphics/Scan_Gruen_klein.png);background-color: transparent;}

Code: Alles auswählen

 pfad = os.path.dirname(os.path.abspath(__file__)) 
wie binde ich nun den "pfad" in die url ?
ich habe es mit {} mit +...+ versucht
dann noch mit "..."
nur wenn man den Pfad komplett ausschreibt ladet er die png
was ist wenn das Porgramm aber mal nicht in "C:/Users/erni1/Desktop/Python/MeinProgramm" ist ?

Re: stylesheet background image resize

Verfasst: Sonntag 16. Februar 2020, 19:32
von Ernie1412
ach ja das mit QRC habe ich ausprobiert
in QT Designer ist alles ok., sobald ich die .py starte kommt das:
Could not create pixmap from :\graphics\Scan_Gruen_klein.png
ich habe irgendwas von compile der *qrc file gelesen, habe ich gemacht. nütze aber nix, gleiche Fehler

Re: stylesheet background image resize

Verfasst: Sonntag 16. Februar 2020, 20:32
von __deets__
Die backslashes sind falsch in der URL. Und hast du den Link gesehen, den ich gepostet habe? Da steht das notwendige kommando drin. Hast du das ausgeführt?

Und wenn du ersetzen willst, hat Python da ja diverse Methoden. ZB String-Formatierung mit dicts.

“{key}”.format(key=11)

Analog kannst du also das Stylesheet formatieren. Allerdings musst du dann { und } escapen. Daher wäre ggf ein anderes Vorgehen einfacher.

Re: stylesheet background image resize

Verfasst: Sonntag 16. Februar 2020, 21:09
von Ernie1412
Danke dir !
ich habe das import resource nicht gesehen, nun klappt alles super