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