如何将子窗口放在主窗口内(PyQt)

时间:2015-05-26 23:02:10

标签: qt pyqt parent childwindow

我在stackoverflow和google看了几天就像我的情况一样,但我找到的所有例子都没有用。

我想要的是让我的父窗口显示菜单,然后从该菜单调用其他子窗口并在父窗口中执行/显示它们。

我尝试在父窗口中放置一个小部件并在其中调用子窗口,使用MDIArea,但没有任何效果。

观察值: 我的屏幕文件是从Qt设计器生成的,我正在制作单独的类来操作小部件,按钮等,以使所有内容更有条理。

我使用QtDesigner在我的主窗口中创建了MdiArea,它们是在一个类中触发的,我在MdiArea中单击了一个调用子窗口(使用QtDesigner创建的小部件)的菜单。

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 个答案:

答案 0 :(得分:1)

这里我通常为子窗口做的事情:

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

这样你就有了一个子窗口,它始终位于主窗口的顶部,只能实例化一次。

我希望它有所帮助

答案 1 :(得分:1)

我发现了一种方法。我使用self.show()代替dialog.show()self.mdiArea代替window.mdiArea

现在我关闭窗口并使用我想要的小部件再次显示它。我想找到一种方法来刷新"窗户。但这是另一个话题 非常感谢你们。