Как поместить дочернее окно в главное окно (PyQt)

Я искал здесь в stackru и Google в течение нескольких дней что-то вроде моего случая, но все примеры, которые я нашел, не работали.

Я хочу, чтобы у меня было родительское окно с меню, а затем вызывать другие дочерние окна из этого меню и выполняю / показываю их внутри родительского окна.

Я попытался поместить виджет в родительское окно и вызвать дочернее окно внутри него, использовать MDIArea, но ничего не получалось.

Obs.: Мои экранные файлы сгенерированы из дизайнера Qt, и я делаю отдельные классы для управления виджетами, кнопками и т. Д., Чтобы все было более организованно.

Я создал MdiArea в своем главном окне, используя QtDesigner, и они в классе, вызванном нажатием меню, которое я вызываю подокном (виджет, созданный также с помощью QtDesigner) внутри MdiArea.

from resources.SubWindowQtDes import Ui_SubWindow
from resources.MainWindowQTDes import Ui_MainWindow
class cadastraAluno(Ui_SubWindow,Ui_MainWindow):
    def __init__(self, parent=None):
        super(cadastraAluno, self).__init__(parent = None)
        dialog = Ui_SubWindow()
        window = Ui_MainWindow()
        mdi = window.mdiArea
        mdi.addSubWindow(dialog, flags = 0)
        dialog.show()

2 ответа

Решение

Я нашел путь. я использовал self.show() вместо dialog.show() а также self.mdiAreaвместо window.mdiArea,

Теперь я закрываю окно и снова показываю его с нужными виджетами. Я хочу найти способ просто "обновить" окно. Но это тема для другой темы.
Большое спасибо, ребята.

Вот что я обычно делаю для дочерних окон:

class subwindow(QtGui.QWidget):
    def createWindow(self,WindowWidth,WindowHeight):
       parent=None
       super(subwindow,self).__init__(parent)
       selt.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint)
       self.resize(WindowWidth,WindowHeight)

class mainwindow(QtGui.QMainWindow):
    def __init__(self, parent=None):
       [...]

    def createsASubwindow(self):
       self.mySubwindow=subwindow()
       self.mySubwindow.createWindow(500,400)
       #make pyqt items here for your subwindow
       #for example self.mySubwindow.button=QtGui.QPushButton(self.mySubwindow)

       self.mySubwindow.show()

Таким образом, у вас есть подокно, которое всегда остается поверх главного окна и которое может быть создано только один раз.

Надеюсь это помогло

Другие вопросы по тегам