4 votes

Puis-je créer une boîte de groupe en dehors d'une zone de défilement ? PyQt4

J'ai une QGroupBox avec un titre '123'. À l'intérieur de la QGroupBox, il devrait y avoir une QScrollArea. Cela signifie que le titre '123' de QGrouBox doit se trouver à l'extérieur de la QScrollArea.

Mes exemples de codes sont les suivants.

import sys

import PyQt4
from PyQt4.QtGui import *
from PyQt4.QtCore import *

class Example(QWidget):
    def __init__(self, parent = None):
        super().__init__()

        btn = QPushButton('button')

        scroll = QScrollArea()
        scroll.setWidgetResizable(True)
        scroll.setWidget(btn)

        groupbox = QGroupBox('123')
        groupbox.setLayout(scroll)

        self.show()

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

Comme vous pouvez le voir ci-dessus, il renvoie maintenant TypeError: setLayout(self, QLayout): argument 1 has unexpected type 'QScrollArea' .

Je me demande juste si cela est réalisable ? Merci !

enter image description here

1voto

eyllanesc Points 79506

Lorsque vous voulez ajouter le contenu à un QGroupBox vous devez le faire à travers une mise en page qui contient les widgets nécessaires, dans ce cas comme il s'agit seulement d'un widget nous pouvons utiliser n'importe quelle mise en page, et dans cette mise en page nous ajoutons le widget qui dans ce cas est le QScrollArea comme échantillon alors :

class Example(QWidget):
    def __init__(self, parent = None):
        super().__init__()
        self.setLayout(QVBoxLayout())

        btn = QPushButton('button')
        scroll = QScrollArea()
        scroll.setWidgetResizable(True)
        scroll.setWidget(btn)

        groupbox = QGroupBox('123', self)
        groupbox.setLayout(QVBoxLayout())
        groupbox.layout().addWidget(scroll)

        self.layout().addWidget(groupbox)

Capture d'écran :

enter image description here

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X