首页 > 技术文章 > PyQt5 -day3-2 箱式布局

jiayou888888 2018-03-08 20:48 原文

QHBoxLayout和QVBoxLayout是基本的布局类,它们在水平和垂直方向上排列小部件。

 1 import sys
 2 from PyQt5.QtWidgets import (QApplication,QWidget ,QPushButton,QHBoxLayout, QVBoxLayout)
 3 
 4 class Example(QWidget):
 5     def __init__(self):
 6         super().__init__()
 7         self.Init_UI()
 8     def Init_UI(self):
 9         self.setGeometry(300,300,300,200)
10         self.setWindowTitle('标题')
11 
12         btn1 = QPushButton('剪刀',self)
13         btn2 = QPushButton('石头',self)
14         btn3 = QPushButton('',self)
15 
16         hbox = QHBoxLayout()
17         hbox.addStretch(1)
18         hbox.addWidget(btn1)
19         hbox.addWidget(btn2)
20         hbox.addWidget(btn3)
21 
22         vbox = QVBoxLayout()
23         vbox.addStretch(1)
24         vbox.addLayout(hbox)
25 
26         self.setLayout(vbox)
27 
28         self.show()
29 if __name__ == '__main__':
30     app = QApplication(sys.argv)
31     ex = Example()
32     sys.exit(app.exec_())
注释:
1.hbox.addStretch(1)
  后面参数 1 的意思是指: 水平方向中,除了控件之外的空白部分,分成一份, 这个拉伸因子 占一份,就是占100%的 空白位置
2.在这个例子中hbox 中 指添加了一个拉伸因子, 如果他添加了多个拉伸因子, 并且后面参数不同的时候,(例如下面的代码)
  
1 hbox = QHBoxLayout()
2 hbox.addStretch(33 hbox.addWidget(btn1)
4 hbox.addStretch(25 hbox.addWidget(btn2)
6 hbox.addStretch(57 hbox.addWidget(btn3)

  这时候,每个拉伸因子所占位置的比例:

  把3个拉伸因子后面的参数加起来 等于 10,第一个占 3/10,第二个占2/10,第三个占 5/10

  

推荐阅读