Взаимодействие двух скриптов pyqt

возникла проблема, делаю приложение с поиском фильмов на pyton. И в нем создаю несколько GroupBox с виджетами, которые включаю и выключаю через .hide(), .show() по необходимости.

Например: Есть условный контейнер Favourites, содержащий информацию о понравившихся пользователю фильмах. Он включается, когда человек нажимает на кнопку "Понравившиеся" в главном меню.

Функция выглядит примерно так

def go_to_favourites(self):
    /// Какой-то код ///
    self.ThirdScreen.show()

Где ThirdScreen -- GroupBox, в котором находится вся инфа о понравившихся фильмах

Всё было бы хорошо, но столкнулся с проблемой: есть пока всего три таких GroupBox (главный экран, понравившиеся и сам процесс подбора фильма), и всё это счастье определено в одном классе и занимает строк 600 кода

Сейчас понадобилось создать ещё одну сцену (GroupBox), где пользователь сможет находить фильмы по названию. Я решил это сделать в отдельном классе, в отдельном скрипте FilmByName.py.

from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5 import QtCore


class ByName(QMainWindow):
    def __init__(self):
        super().__init__()
        self.central_widget = None

    def setupUI(self):
        self.setMaximumSize(470, 780)
        self.setMinimumSize(470, 780)
        if self.central_widget is None:
            print('Error, line 18, FilmByName')
        self.FourthScreen = QGroupBox(self.central_widget)
        self.FourthScreen.setGeometry(QtCore.QRect(0, 0, 470, 780))

        self.InputName = QLineEdit(self.FourthScreen)
        self.InputName.setGeometry(QtCore.QRect(80, 180, 240, 30))
        font = QFont()
        font.setPointSize(12)
        self.InputName.setFont(font)

        self.SubmitButton = QPushButton(self.FourthScreen)
        self.SubmitButton.setGeometry(QtCore.QRect(340, 180, 60, 30))
        self.SubmitButton.setFont(font)
        self.SubmitButton.setText('Поиск')

        self.setCentralWidget(self.central_widget)

И, собственно сама проблема: Есть скрипт Main.py, в нем есть класс

class Ui_MainWindow(QMainWindow):

В этом классе есть GroupBox, а в нём есть кнопка, при нажатии на которую вызывается функция Test():

def test(self):
        import FilmByName

        self.bn = FilmByName.ByName()
        self.bn.central_widget = self.centralwidget
        self.bn.setupUI()
        self.bn.show()

И теперь при нажатии на кнопку появляется ещё одно окно, в котором к тому же ничего нет:введите сюда описание изображения

Подскажите, пожалуйста, как это пофиксить (сделать так, чтобы виджеты из файла FilmByName отображались как новый слой в главном окне (без создания нового))

p.s. Посоветуйте пж хорошей литературы по pyqt5, и годных туториалов


Ответы (0 шт):