PyQt主窗口 vs. 对话框

3

可能是一个愚蠢的新手问题,但这里有个例子:

我有一些基本的代码来创建一个QDialog。实际上,这很好用,我有一个可以创建Pyqtgraph窗口、加载和绘制数据等的东西:

import sys
from PyQt4 import QtGui

#class Window(QtGui.QMainWindow):
class Window(QtGui.QDialog):

    def __init__(self):
        super(Window, self).__init__()

        # Button to load data
        self.LoadButton = QtGui.QPushButton('Load Data')
        # Button connected to `plot` method
        self.PlotButton = QtGui.QPushButton('Plot')

        # set the layout
        layout = QtGui.QVBoxLayout()
        layout.addWidget(self.LoadButton)
        layout.addWidget(self.PlotButton)

        self.setLayout(layout)

        self.setGeometry(100,100,500,300)
        self.setWindowTitle("UI Testing")


if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)

    main = Window()
    main.show()

    sys.exit(app.exec_())

然而,我希望将其创建为QMainWindow(仅为了现在获取最大化、关闭等按钮),但是如果我更改类定义为:

class Window(QtGui.QMainWindow):

运行代码后,主窗口是空白的。简单的问题是,我需要做什么才能使布局显示在QMainWindow中,就像在QDialog中一样?

最好的祝福,

Ben

1个回答

2

文档中得知:

注意:不支持创建没有中央窗口小部件的主窗口。即使只是一个占位符,您也必须拥有中央窗口小部件。

因此需要创建并设置中央窗口小部件:

    def __init__(self):
        super(Window, self).__init__()

        # Button to load data
        self.LoadButton = QtGui.QPushButton('Load Data')
        # Button connected to `plot` method
        self.PlotButton = QtGui.QPushButton('Plot')

        # set the layout
        layout = QtGui.QVBoxLayout()
        layout.addWidget(self.LoadButton)
        layout.addWidget(self.PlotButton)

        # setup the central widget
        centralWidget = QtGui.QWidget(self)
        self.setCentralWidget(centralWidget)
        centralWidget.setLayout(layout)

        self.setGeometry(100,100,500,300)
        self.setWindowTitle("UI Testing")

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接