Qt: Inline svg als Hintergrund für QPushButton

Ein neuer Artikel wurde veröffentlicht
  • Hallo liebe PyQtler,


    Ich würde gerne inline svgs auf einen QPushButton dynamisch erzeugen.

    Das ganze soll eine Library für ein LCARS ähnliches Interface werden.


    Sowas wäre ganz toll:


    Code
    1. svg="""
    2. <svg height="100" width="100">
    3.   <circle cx="50" cy="50" r="40" stroke="black" stroke-width="3" fill="red" />
    4. </svg>
    5. """
    6. self.notaus = QtGui.QPushButton(self.centralwidget)
    7. self.notaus.setGeometry(QtCore.QRect(100,100, 100, 100))
    8. self.notaus.setStyleSheet("border: none; \n background-image: " + self.foobar(svg) + ");\n")


    Geht das irgendwie?

  • Ich kenne mich da mit Python nicht aus, hätte aber sonst einen Workaround, wenn es wirklich nur ein einfaches geometrisches Primitiv sein soll, dann könnte das mit CSS (zumindest nehme ich aufgrund von .SetStyleSheet an, dass es CSS nutzt) allein funktionieren - Beispiel: http://jsfiddle.net/DsW9h/8396/


    Hat es einen besonderen Grund, dass es ein SVG sein muss? Denn an sich sieht es ja eh nach absoluten Größen aus.


    Alternativ ginge auch das einbetten als base64 data-uri im CSS oder einfach die Nutzung eines Icon-Fonts, bspw. FontAwesome - wobei auch "normale" Schriftarten einfache Formen beinhalten, wie bspw. Kreise.


  • Ich habe es jetzt wie folgt gelöst. Der Umweg über eine Datei gefällt mir zwar nicht sonderlich. Aber wenigstens funktioniert es.

    Das lcars Projekt liegt auf github, und ist noch ganz am Anfang:


    github.com/StowasserH/pylcars