如何将 child window 放入主 window(PyQt)

How to put a child window inside a main window(PyQt)

我在 Whosebug 和 google 中查看了几天,但我发现的所有示例都不起作用。

我想要的是让我的 parent window 有菜单,然后从那个菜单调用其他 child windows 和 execute/show 他们在 parent window.

里面

我试过在parentwindow里放一个widget,然后在里面调用childwindow,用MDIArea,但是没用。

观察: 我的屏幕文件是从 Qt 设计器生成的,我正在制作分离的 classes 来操作小部件、按钮等,以使一切更有条理。

我使用 QtDesigner 在主 window 中创建了 MdiArea,它们在 class 中通过单击菜单触发,我在里面调用了 subwindow(也是使用 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()

这是我通常为 child windows 做的事情:

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()

这样你就有了一个子window,它总是在主 window 之上并且只能被实例化一次。

希望对您有所帮助

我找到了一个方法。我使用 self.show() 而不是 dialog.show()self.mdiArea 而不是 window.mdiArea

现在我关闭 window 并用我想要的小部件再次显示它。我想找到一种方法来 "refresh" window。但这是另一个话题。
非常感谢大家。