Как поместить дочернее окно в главное окно (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()
Таким образом, у вас есть подокно, которое всегда остается поверх главного окна и которое может быть создано только один раз.
Надеюсь это помогло