布局
主控件 setlayout
子控件 setlayout
子控件增加scrollarea 需新加一个父widget
father.setlayout->scroall.setwidget->layout.addwidget(scroll)
widget==layout>scroall、childwidget
hbox=QtGui.QHBoxLayout()#水平布局
vbox=QtGui.QvBoxLayout()#垂直布局
#可通过hbox.setAlign()
hbox.addWidget(QtGui.QPushButton('1'),0,QtCore.Qt.AlignLeft | QtCore.Qt.AlignTop)
hbox.addStretch()#即不缩放
gridLayout=QtGui.QGridLayout()#网格布局
gridLayout.addWidget(QWidget widget, int row, int col, int alignment = 0)
gridLayout.addWidget(QWidget widget, int fromRow, int fromColumn, int rowSpan, int columnSpan, int alignment)
#fromRow:起始行
#fromColumn:起始列
#rowSpan:控件跨越的行
#columnSpan:控件跨越的列
#setSpacing(int spacing)
form = QFormLayout() #表单布局
form.addRow(lb1, le1)#form 2行1列组成
##嵌套布局
class My(QWidget):
def __init__(self):
super(My,self).__init__()
self.initUI()
def initUI(self):
all=QHBoxLayout()
v=QVBoxLayout()
h=QHBoxLayout()
g=QGridLayout()
vw=QWidget()
hw=QWidget()
gw=QWidget()
v.addWidget(QLabel('1'))
v.addWidget(QLabel('2'))
h.addWidget(QLabel('3'))
h.addWidget(QLabel('4'))
g.addWidget(QLabel('5'),0,0)
g.addWidget(QLabel('6'),1,0)
g.addWidget(QLabel('7'),2,0)
vw.setLayout(v)
hw.setLayout(h)
gw.setLayout(g)
all.addWidget(vw)
all.addWidget(hw)
all.addWidget(gw)
self.setLayout(all)
all.setSpacing(1)
self.setGeometry(500,500,300,300)
self.show()
#spliter可自由操作子组件大小
class My(QWidget):
def __init__(self):
super(My,self).__init__()
self.initUI()
def initUI(self):
h=QHBoxLayout(self)#总布局
left=QFrame()
center=QFrame()
right_bottom=QTextEdit()
left.setFrameShape(QFrame.StyledPanel)#占用
center.setFrameShape(QFrame.StyledPanel)
sp1=QSplitter(Qt.Horizontal)#spliter方向
sp1.addWidget(left)
sp1.setSizes([50,20])#设置初始大小,会根据你的geometry调整
sp2=QSplitter(Qt.Vertical)
sp2.addWidget(center)
sp2.addWidget(right_bottom)
sp1.addWidget(sp2)#给sp1增加子类
h.addWidget(sp1)#h为总的布局
self.setLayout(h)
self.setGeometry(400,500,400,400)