pyqt图形化显示—3.5.布局
<p>上一篇讲了一下布局 只涉及了一点点,布局就将设置好的控件排布在窗口上显示,一共有三个半布局方式,垂直布局和水平布局,网格布局,还有半个表单布局。由于人的阅读习惯我们一般是整体主布局采用垂直布局,单个小布局框架采用水平布局,当然直接使用网格布局也是可以的。</p><h2>引入库</h2>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">from</span> PySide6.QtWidgets <span style="color: rgba(0, 0, 255, 1)">import</span> QVBoxLayout, QHBoxLayout, QGridLayout, QFormLayout</pre>
</div>
<div>QVBoxLayout——垂直布局;QHBoxLayout——水平布局,QGridLayout——网格布局,QFormLayout——表单布局</div>
<h2>应用</h2>
<div>使用也很简单,垂直和水平是很类似的下面只举一个例子
<div class="cnblogs_code">
<pre> <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 垂直布局</span>
layout = QVBoxLayout() <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">水平布局只需要更改这个函数就可以了</span>
layout.addWidget(QPushButton(<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">按钮1</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">))
layout.addWidget(QPushButton(</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">按钮2</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">))
layout.addWidget(QPushButton(</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">按钮3</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">))
self.setLayout(layout)</span></pre>
</div>
<p>我们就可以得到下面的窗口</p>
</div>
<div>
<p>垂直布局: <img src="https://img2024.cnblogs.com/blog/1677113/202601/1677113-20260107192453482-193593635.png"> 水平布局: <img src="https://img2024.cnblogs.com/blog/1677113/202601/1677113-20260107192603638-255855530.png"></p>
<p>下面就是网格布局了</p>
<p> </p>
<div class="cnblogs_code">
<pre> <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 网格布局</span>
layout =<span style="color: rgba(0, 0, 0, 1)"> QGridLayout()
layout.addWidget(QPushButton(</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">按钮1</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">), 0, 0)
layout.addWidget(QPushButton(</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">按钮2</span><span style="color: rgba(128, 0, 0, 1)">'</span>), 0, 1<span style="color: rgba(0, 0, 0, 1)">)
layout.addWidget(QPushButton(</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">按钮3</span><span style="color: rgba(128, 0, 0, 1)">'</span>), 1<span style="color: rgba(0, 0, 0, 1)">, 0)
layout.addWidget(QPushButton(</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">按钮4</span><span style="color: rgba(128, 0, 0, 1)">'</span>), 1, 1<span style="color: rgba(0, 0, 0, 1)">)
layout.addWidget(QPushButton(</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">按钮5</span><span style="color: rgba(128, 0, 0, 1)">'</span>), 2, 0, 1, 2<span style="color: rgba(0, 0, 0, 1)">)
self.setLayout(layout)</span></pre>
</div>
<p>需要注意的是网格布局的addWidget 可以使用五个参数,(添加控件,控件起始行,控件起始列,控件行高,控件列宽)</p>
<p>其中行列坐标起始为(0,0),行高和列宽不设置则默认为1,1</p>
<p>网格布局: <img src="https://img2024.cnblogs.com/blog/1677113/202601/1677113-20260107192745563-1638931052.png"></p>
<p>剩下就那半个了,表单布局,其实就是网格布局的一种,完全可以被网格布局代替,就不详细介绍了</p>
<p> </p>
<p> </p>
</div><br><br>
来源:https://www.cnblogs.com/berserker-slst/p/19453704
頁:
[1]