2017-09-11 3 views
0

Ich unterklassiere die QAbstractButton-Klasse, um ein anklickbares Symbol zu erstellen, das auf Benutzerdateien zugreift. Ich tat dies nach diesem Tutorial hier: https://coolchevy.org.ua/2016/06/20/basic-example-how-to-code-a-image-button-in-pyqt/QAbstractButton Bild streckt sich über die gesamte Breite der Spalte

Das einzige Problem, das ich in renne, ist die QAbsractButton Größe. Ich füge es als Widget zu einem QGridLayout hinzu. Im Raster befindet es sich direkt über einer Schaltfläche mit einer größeren Breite. Das Bild nimmt die Größe der Säule und erstreckt sich, wie hier gezeigt

Gibt es eine Möglichkeit, die Größe QAbstractButton einzustellen, bevor es auf dem Bildschirm hinzugefügt wird? Ich habe versucht .setMaximumWidth, aber es hat nicht die Methode. Vielen Dank!

aktualisieren w/code

def init_ui(self): 
    self.settings_button=QPushButton("Email settings") 
    self.templates_button=TemplateButton(QPixmap('templates.png')) 
    self.layout.addWidget(self.templates_button,0,4) 
    self.layout.addWidget(self.settings_button,1,4)` 

class TemplateButton(QAbstractButton): 
    def __init__(self,pixmap): 
     super(TemplateButton, self).__init__() 
     self.pixmap = pixmap 

    def paintEvent(self, event): 
     pix = self.pixmap 
     if self.isDown(): 
      print("Click") 
     painter = QPainter(self) 
     painter.drawPixmap(event.rect(), pix) 

    def enterEvent(self, event): 
     self.update() 
    def leaveEvent(self, event): 
     self.update() 
    def sizeHint(self): 
     return QSize(50,50) 
+0

Zeigen Sie Ihren Code bitte – eyllanesc

+0

@eyllanesc Ich habe es mit dem entsprechenden Code aktualisiert. –

Antwort

0

In diesem Fall wird die Größe Politik für das Widget etablieren müssen, mit der Methode setSizePolicy(), Die policies, die hergestellt werden können, sind wie folgt:

QSizePolicy :: Fixed: Die QWidget :: sizeHint() ist die einzige akzeptable Alternative, so dass das Widget nie wachsen oder schrumpfen kann (z. B. die vertikale Richtung einer Schaltfläche).

QSizePolicy :: Minimum: Die sizeHint() ist minimal und ausreichend. Das Widget kann erweitert werden, aber es gibt keinen Vorteil, dass es größer ist (z. B. die horizontale Richtung eines Druckknopfs). Sie darf nicht kleiner sein als die von sizeHint() bereitgestellte Größe.

QSizePolicy :: Maximum: Der sizeHint() ist ein Maximum. Das Widget kann beliebig verkleinert werden, wenn andere Widgets den Platz benötigen (z. B. eine Trennlinie). Sie darf nicht größer als die Größe sein, die von sizeHint() bereitgestellt wird.

QSizePolicy :: Bevorzugt: Die sizeHint() ist am besten, aber das Widget kann geschrumpft werden und immer noch nützlich sein. Das Widget kann erweitert werden, aber es hat keinen Vorteil, dass es größer ist als sizeHint() (die Standard-QWidget-Richtlinie).

QSizePolicy :: Expanding: Die sizeHint() ist eine vernünftige Größe, aber das Widget kann geschrumpft werden und immer noch nützlich sein. Das Widget kann zusätzlichen Platz nutzen, so dass es so viel Platz wie möglich erhält (z. B. die horizontale Richtung eines horizontalen Schiebers).

QSizePolicy :: MinimumExpanding: Die sizeHint() ist minimal und ausreichend. Das Widget kann zusätzlichen Platz nutzen, so dass es so viel Platz wie möglich erhält (z. B. die horizontale Richtung eines horizontalen Schiebers).

QSizePolicy :: Ignoriert Die sizeHint() wird ignoriert. Das Widget erhält so viel Platz wie möglich.

er Richtlinien, die die Widgets haben standardmäßig ist QSizePolicy::Preferred, aber in Ihrem Fall sollten Sie QSizePolicy::Fixed verwenden.Darüber hinaus müssen Sie die Ausrichtung festzulegen, zentriert werden, so dass aus den oben Sie das folgende erhalten:

self.settings_button=QPushButton("Email settings") 
self.templates_button=TemplateButton(QPixmap('qt_extended_48x48.png')) 
self.templates_button.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) 
self.layout.addWidget(self.templates_button,0,4, Qt.AlignCenter) 
self.layout.addWidget(self.settings_button,1,4) 

Screenshots:

enter image description here

enter image description here

+0

Danke. Es funktioniert und jetzt weiß ich, wie QAbstractButtons ++ Größe –

Verwandte Themen