Portál AbcLinuxu, 7. listopadu 2025 13:19
setImage (self, QString path). Myslel jsem, že to obejdu přes QLabel, které pixmapu nastavit umí, ale tu se mi nepodařilo přidat do Layoutu
Hledal jsem inspiraci u jiných plasmoidů - nejslibněji vypadá Now Rocking, ovšem kód je hodně komplikovaný a moje omezené znalosti objektového programování a pythonu nestačí k pochopení co se to tam děje a hlavně proč se to děje a proč právě takhle.
Vím o tom, že můžu použít metodu appletu paintInterface(), ale pak si musím umístění jednotlivých prvků řešit sám. Rád bych to nechal na Plasmě/Qt vzhledem k plánovanému rozšíření o další prvky.
Kousek kódu:
# We need a layout
self.layout = QGraphicsLinearLayout(Qt.Horizontal, self.applet)
self.setLayout(self.layout)
# A label
self.label = Plasma.Label(self.applet)
self.label.setScaledContents(True)
self.label.setAlignment(Qt.AlignCenter)
# add it to current layout
self.layout.addItem(self.label)
# Prepare pixmap
pixmap = QPixmap();
painter = QPainter();
painter.begin(pixmap)
painter.setPen = QColor('green')
painter.drawText(self.label.rect(), QtCore.Qt.AlignCenter, text)
#self.label.setText(text)
self.label.set???(pixmap)
Potřeboval bych buď nějak nastavit tu pixmapu na Plasma.Label, nebo přidat do layoutu objekt QLabel, nebo použít nějaký jiný prvek, podobně jako v Now Rocking.
Teď mě napadlo zkusit self.label.nativeWidget().setPixmap(pixmap). Sice to nespadne na chybu, ale label je prázdný
Na otázku zatím nikdo bohužel neodpověděl.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.