20
Июл
2021

PyQt6, Qt Designer. Как настакать отдельный фрейм на мейн_виндов в скролл_ареа?

Создал в Qt Designer мейн_виндов, в котором располагается QScrollArea.

Также имеется отдельный виджет, который в свою очередь должен располагаться внутри QScrollArea.

В интернете уйма решений, так или иначе все они работают, если я сильно упрощаю свой код. Но вот с тем кодом, который мне необходим, завести не получается.

Вот паста главного окна: main_window.py

Вот тут код виджета: frame.py

Вот таким образом выглядит код, который, собственно, и запускает всю карусель:

from PyQt6.QtWidgets import QApplication
from PyQt6.QtWidgets import QMainWindow
from main_window import Ui_MainWindow
from frame import Ui_Form

import sys


class MainWindow:
    def __init__(self):
        self.window = QMainWindow()
        self.main_ui = Ui_MainWindow()
        self.main_ui.setupUi(self.window)
        self.form_ui = Ui_Form()

        self.scroll = self.main_ui.scrollArea
        self.widget = self.main_ui.scrollAreaContents
        self.vbox = self.main_ui.verticalLayout_2

        self.stack_frames()

        self.form_ui.btn_about_file.clicked.connect(self.show_about_file)
        self.main_ui.btn_back.clicked.connect(self.show_main_page)

    def stack_frames(self):
        for i in range(50):
            object = self.form_ui.setupUi(self.widget)
            self.vbox.addWidget(object)
        self.scroll.setWidget(self.widget)

    def show_about_file(self):
        self.main_ui.main_stackedWidget.setCurrentWidget(self.main_ui.about_page)

    def show_main_page(self):
        self.main_ui.main_stackedWidget.setCurrentWidget(self.main_ui.main_page)

    def show(self):
        self.window.show()


if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec())

Вся магия происходит в функции stack_frames.

Вот так выглядит один виджет в главном окне:

А вот так, если виджетов несколько:

Все элементы виджета улетают в верхний левый угол.

Помогите разобрать этот момент. Спасибо.

Источник: https://ru.stackoverflow.com/questions/1306974/pyqt6-qt-designer-%D0%9A%D0%B0%D0%BA-%D0%BD%D0%B0%D1%81%D1%82%D0%B0%D0%BA%D0%B0%D1%82%D1%8C-%D0%BE%D1%82%D0%B4%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9-%D1%84%D1%80%D0%B5%D0%B9%D0%BC-%D0%BD%D0%B0-%D0%BC%D0%B5%D0%B9%D0%BD-%D0%B2%D0%B8%D0%BD%D0%B4%D0%BE%D0%B2-%D0%B2-%D1%81%D0%BA%D1%80%D0%BE%D0%BB%D0%BB-%D0%B0%D1%80%D0%B5%D0%B0

Тебе может это понравится...

Добавить комментарий