【发布时间】:2014-01-31 10:53:53
【问题描述】:
我正在尝试使用 PyQt4 创建一个应用程序窗口。我想创建一个带有框架的窗口,并在该框架内创建一些小部件,例如标签和文本编辑器。 我将框架创建为 QGroupBox 以便能够在其上放置标题。 我知道在处理框架时 HBox 和 VBox 似乎是首选布局,但是,我想使用网格布局来管理框架内小部件的定位,我发现它更易于管理。 所以我尝试了这段代码:
import sys
from PyQt4 import QtGui, QtCore
class Example(QtGui.QWidget):
def __init__(self):
super(Example, self).__init__()
self.initUI()
def initUI(self):
hbox = QtGui.QHBoxLayout()
grid = QtGui.QGridLayout()
#Definition des Tracing Parameters widgets
WindowSize = QtGui.QLabel("Window size (m)")
SampPts = QtGui.QLabel("Sampling points")
WindowSizeEdit = QtGui.QLineEdit()
SampPtsEdit = QtGui.QLineEdit()
TracParamFrame = QtGui.QGroupBox(self)
TracParamFrame.setTitle("Tracing Parameters")
hbox.addLayout(grid)
grid.addWidget(WindowSize,0,0)
grid.addWidget(WindowSizeEdit,0,1)
grid.addWidget(SampPts,1,0)
grid.addWidget(SampPtsEdit,1,1)
self.setLayout(hbox)
self.setGeometry(300,300,350,300)
self.show()
def main():
app = QtGui.QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
这里的主要想法是创建一个 hbox,我在其中放置 QGroupBox,然后在其中放置一个网格布局。 问题是在生成的应用程序中,小部件被放置在框架之外,另外我得到了错误:
QLayout:尝试将 QLayout“”添加到已经有布局的示例“”中 QWidget::setLayout: 试图在已经有布局的示例“”上设置 QLayout“”
【问题讨论】: