pyqt5 中的addStretch


一直对addStretch感觉怪怪的,直到看见了下面这段话:

addStretch()函数用于在控件按钮间增加伸缩量,

伸缩量的比例为1:1:1:6,意思就是将控件以外的空白地方按设定的比例等分为9份

并按照设定的顺序放入Layout布局器中。

 

addStretch()的功能相当于是添加一个空白占位控件

1. 比如我有一个QHBoxLayout,我依次addWidget加入如下控件,不使用addStretch()

h_layout = QHBoxLayout()
h_layout.addWidget(QLabel("PLCIP:"))
h_layout.addWidget(self.ip_edit)
h_layout.addWidget(QLabel("PLC的端口:"))
h_layout.addWidget(self.port_edit)
h_layout.addWidget(self.connect_plc)

布局如下,因为这里没有添加任何空白占位控件,所以已有的这些控件将会将这个横向布局给占满。本来这些控件按默认长度来排列的话会占不满整个长度,但因为没有空白占位控件,所以QT会自动将这些控件按它自己的规则比例来拉升填满。

 

 

2. 如果在最后加一个addStretch()。如果一个Layout中只有一个addStretch(),那里面的参数将不重要。

h_layout = QHBoxLayout()
h_layout.addWidget(QLabel("PLCIP:"))
h_layout.addWidget(self.ip_edit)
h_layout.addWidget(QLabel("PLC的端口:"))
h_layout.addWidget(self.port_edit)
h_layout.addWidget(self.connect_plc)
h_layout.addStretch(1)

布局如下,这里在最后添加了一个空白站位控件,那这个控件会将所有空白位置都占满。这里空白位置是指除了addStretch之外的所有控件按默认长度排列后还剩下的空白。

 

 

 3. 如果在这个button前面也加一个addStretch,那这两个addStretch将根据各自的参数来按比例来分配空白空间

h_layout = QHBoxLayout()
sub_grid.addLayout(h_layout, 0, 0)
h_layout.addWidget(QLabel("PLCIP:"))
h_layout.addWidget(self.ip_edit)
h_layout.addWidget(QLabel("PLC的端口:"))
h_layout.addWidget(self.port_edit)
h_layout.addStretch(1)
h_layout.addWidget(self.connect_plc)
h_layout.addStretch(1)

布局如下,

 

 

 4. 如果button前的addStretch的参数改为2,那button前面的空白长度将是整个空白长度的2/3,后面的空白占整个空白长度的1/3

h_layout = QHBoxLayout()
sub_grid.addLayout(h_layout, 0, 0)
h_layout.addWidget(QLabel("PLCIP:"))
h_layout.addWidget(self.ip_edit)
h_layout.addWidget(QLabel("PLC的端口:"))
h_layout.addWidget(self.port_edit)
h_layout.addStretch(2)
h_layout.addWidget(self.connect_plc)
h_layout.addStretch(1)

布局如下,

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM