前面已经介绍水平布局控件 QHBoxLayout和垂直布局控件 网页链接的简单使用。这章主要用来介绍更复杂但同时更具有操作性的网格布局控件QGridLayout方法的使用。
在进一步介绍之前,让我们设想一个场景——将五个元素按照图1的方式进行布置。可见,这次不仅要从列的角度,而且也要从行的角度来考虑各种元素对整体布局空间的影响。如果将每一列或者每一行的空间进行细化,那么可以利用水平布局和垂直布局嵌套的方法实现上述任务,比如,当需要放置元素二、元素三、元素四时,可以先将元素三和元素四放在一垂直布局控件内,然后将该控件和元素二再一起放入一个水平控件内(2 --> [3 4])。但是在元素数量多的情况下,这种只依靠嵌套水平布局和垂直布局控件的方法,会引起对水平控件和垂直控件过多使用的问题,比如实现图1布局时,至少需要两个垂直布局控件和两个水平布局控件(1--> [[2 --> [3 4]] 5])。并且,布局空间后期调整的困难度将随着布局控件个数的增加,而呈现增加趋势。不过,PyQt提供了应对这种局势的方法——QGridLayout网格布局控件。
图 1 元素布局
代码实现
网格布局控件QGridLayout的调用方式与水平布局控件(QHBoxLayout)、垂直布局控件(QVBoxLayout)等调用方式相同。
首先,导入控件:
然后,实列化(instantiate):
然后,通过addWidget()方法添加控件,通过addLayout()方法添加其它布局:
效果图如下:
代码解析
主要涉及QGridLayout布局控件添加元素命令参数和行或列控件分配问题。
addWidget()或addLayout()
这两个方法的第一个元素均是放入的控件,比如列子中的QLabel()控件,第二个和第三个参数设定的是控件将放入哪行哪列,比如既是将放入网格控件的第零行,第一列。第四个和第五个参数设定的是该控件将占用多少行和多少列,比如设定元素一控件将占用从第一行开始往下的所有行,即占用其它所有行,但只占用从第一列往后的一列,即不占用其它列。
setRowStretch()
该方法是在存在多余空间的前提下,设定各行相对所占空间大小,第一个参数指明特定行,第二个参数限定相对空间大小,比如该列中,通过设定和,第一行和第二行所占有空间大小的比将是1:3。如果第二个参数设定为0时,该行只占用本身的空间,该空间不随窗口大小的变化而改变。
效果视频演示
为了便于空间效果展示,为QLabel空间添加了绿色背景色,且文本设置为了居中。
完整代码
到此这篇gridlayout布局怎么用(gridlayoutmanager)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/rfx/37614.html