Layout innerhalb von QScrollArea innerhalb von Layout [Duplikat]Python

Python-Programme
Anonymous
 Layout innerhalb von QScrollArea innerhalb von Layout [Duplikat]

Post by Anonymous »

Ich möchte ein scrollbares QVBoxLayout in einem anderen QVBoxLayout erstellen. Mein Plan ist eine Hierarchie wie diese:
  • QMainWindow
  • QWidget
  • QVBoxLayout
  • QWidget mit darauf aufgerufenem QScrollArea.setWidget()
  • QVBoxLayout
Hier ist ein minimal reproduzierbares Beispiel:

Code: Select all

import sys

from PySide6.QtCore import Qt
from PySide6.QtWidgets import (
QApplication,
QLabel,
QMainWindow,
QScrollArea,
QVBoxLayout,
QWidget,
)

class MainWindow(QMainWindow):
def __init__(self) -> None:
super().__init__()

self.widget = QWidget(self)
self.setCentralWidget(self.widget)

self.vbox_outer = QVBoxLayout()
self.widget.setLayout(self.vbox_outer)
self.vbox_outer.addWidget(QLabel("TOP"))

self.scroll_area = QScrollArea(self.widget)
self.scroll_area.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn)
self.scroll_area.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
self.scroll_area.setWidgetResizable(True)
self.vertical_layout_widget = QWidget(self.scroll_area)
self.scroll_area.setWidget(self.vertical_layout_widget)

self.vbox_inner = QVBoxLayout()
self.vertical_layout_widget.setLayout(self.vbox_inner)
self.vbox_outer.addWidget(self.vertical_layout_widget)

for _i in range(1, 50):
obj = QLabel("TextLabel", self.vertical_layout_widget)
self.vbox_inner.addWidget(obj)
self.vbox_outer.addWidget(QLabel("BOTTOM"))

self.setGeometry(0, 0, 1000, 500)
self.show()

app = QApplication(sys.argv)
main = MainWindow()
sys.exit(app.exec())
Ich kann dem, was ich möchte, nahe kommen, wenn die QScrollArea kein QVBoxLayout, sondern stattdessen eine Zeichenfolge mit vielen Zeilen enthält, oder wenn das zentrale Widget die QScrollArea selbst ist. Ich habe mit diesem Beispiel begonnen, aber dafür war der Scrollbereich das zentrale Widget und es gab keine Benutzeroberfläche außerhalb des Scrollbereichs. Diese Fragen sind ähnlich, aber so unterschiedlich, dass ich sie nicht zum Laufen bringen kann: 1 2

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post