PyQt主窗口与对话框
问题内容:
可能是一个愚蠢的菜鸟问题,但这是(简洁的示例):
我有一些基本的代码来创建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中一样显示布局,我需要做什么?
最好的祝福,
本
问题答案:
从文档:
注意:不支持创建没有中央窗口小部件的主窗口。您必须有一个中央小部件,即使它只是一个占位符。
因此应创建并设置中央窗口小部件:
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")