【PyQt】网格布局 QGridLayout

【PyQt】网格布局 QGridLayout,第1张

你可以随时添加子控件或布局到此布局中,但在将其插入父布局之前,整个布局都不会执行。

QGridLayout 通过其父布局或 parentWidget() 获取可用空间,将其划分为行和列,并将其管理的每个窗口小部件放入正确的单元格中。

每列具有最小宽度和拉伸系数。最小宽度是使用 setColumnMinimumWidth() 设置的值与该列中所有控件的最小宽度之中的最大值。拉伸因子使用 setColumnStretch() 设置,并确定列将超过其必要最小值的可用空间量。

通常,使用 addWidget() 将每个托管控件或布局放入自己的单元格中。使用 addItem() 和 addWidget() 的行和列跨越重载,窗口小部件也可能占用多个单元格。如果这做,QGridLayout将猜测如何在列/行上分配大小(基于拉伸因子)。

使用 removeWidget() 可以从布局中删除控件。或者在控件上使用 hide() 也可以有效地将其隐藏,直到使用 show() 。

上图中第 0、2 和 4 列均由一个 QLabel 、一个 QLineEdit 和一个 QListBox 组成,第 1 列和第 3 列则是使用 setColumnMinimumWidth() 创建的占位符。第 0 行包含三个 QLabel 对象,第 1 行包括三个 QLineEdit 对象,第 2 行包括三个 QListBox 对象。

请注意,上图中列和行的宽高并不一定相同。如果希望两列具有相同的宽度,则必须自己将最小宽度和拉伸系数设置为相同。您可以使用 setColumnMinimumWidth() 和 setColumnStretch() 执行此 *** 作。

如果 QGridLayout 不是顶级布局(即,不管理所有窗口小部件的区域和子窗口),则必须在在创建之后对其执行任何 *** 作之前,将其添加到其父布局。添加布局的常规方法是在父布局上调用 addLayout() 。

QGridLayout还包括两个边距宽度:contentsMargins 和 spacing() 。contentsMargins 是 QGridLayout 四边的保留空间的宽度。 spacing() 是相邻框之间自动分配的间距的宽度。

contentsMargins 默认值由 style 提供,子控件默认为 9,窗口为 11。spacing 默认与顶级布局的 margin 宽度相同,或与父布局的相同。

首先,如果没有安装python和PyQt软件的请先直接搜索下载并安装。python是一个开源软件,因此都是可以在网上免费下载的,最新版本即可。下载完成后,我们先打开PyQt designer。

2

打开后,首先是一个默认的新建窗口界面,在这里我们就选择默认的窗口即可。

3

现在是一个完全空白的窗口。第一步我们要先把所有的设计元素都拖进这个窗口。我们先拖入一个“Label”,就是一个不可编辑的标签。

4

随后我们再拖入一个可以编辑的“Line Edit”

5

最后我们拖入最后一个元素:“PushButton”按钮,也就是平时我们所点的确定。

6

目前我们已经把所有所需要的元素都拖入了新建的窗口。对于每一个元素,我们都可以双击进行属性值的修改,此时我们仅需要双击改个名字即可

7

此时我们已经完成了一半,接下来需要对动作信号进行 *** 作。我们需要先切入编辑信号的模式

8

此时把鼠标移动到任意元素,都会发现其变成红色,代表其被选中。

9

当我们选中pushbutton后,继续拖动鼠标指向上面的line edit,会发现由pushbutton出现一个箭头指向了line edit,代表pushbutton的动作会对line edit进行 *** 作。

10

随即会d出一个配置连接窗口。左边的是pushbutton的 *** 作,我们选择clicked(),即点击pushbutton。

右边是对line edit的 *** 作,我们选择clear(),即清楚line edit中的内容。

最后我们点击确定。

保存完成后,我们在PyQt中的 *** 作就已经完成了。保存的文件名我们命名为test,PyQt生成的设计文件后缀是ui。

然后我们需要把ui文件转换成可编译的py文件,我们需要用到PyQt提供的pyuic4命令来完成转换。这是一个DOS命令,因此我们需要调出DOS *** 作界面。打开开始菜单,找到附件中的运行。

在运行中输入cmd,确定后即可打开DOS界面。

在DOS界面下,我们需要定位到刚才保存的ui文件的位置,如果是默认的话,会保存在C:\Python27\Lib\site-packages\PyQt4,定位的过程如图所示。转换成py文件的命令是:pyuic4 testui -o testpy

转换命令执行后,会生成一个testpy的文件,如图所示

最后我们需要对生成的python文件加入头文件和主函数,就可以生成一个完整的GUI程序了!首先是在整个程序的最开头加入import sys,如图所示。

另外,在程序的末尾,加入如图所示的主函数代码。主函数会调用我们再PyQt里已经完成的生成元素的函数以及配置连接函数,因此我们只需要加上主函数来调用他们即可。

保存后,双击我们编辑完成的python文件,就会d出我们刚才设计的GUI界面啦!这就是我们所完成的第一个用python语言写的GUI程序啦!

Python获取电脑截图有多种方式,具体如下:

PIL中的ImageGrab模块

windows API

PyQt

pyautogui

使用Selenium截图

使用PIL中的ImageGrab模块简单,但是效率有点低,截屏一次需05s。

调用windows API,速度快但是使用较复杂,这里就不做详细介绍了,因为有更好用的PyQt。

PyQt比调用windows API简单很多,而且有windows API的很多优势,比如速度快,可以指定获取的窗口,即使窗口被遮挡。需注意的是,窗口最小化时无法获取截图。

首先需要获取窗口的句柄。

程序会打印窗口的hwnd和title,有了title就可以进行截图了。

pyautogui是比较简单的,但是不能指定获取程序的窗口,因此窗口也不能遮挡,不过可以指定截屏的位置,004s一张截图,比PyQt稍慢一点,但也很快了。

使用Selenium只能进行WEB程序截图

一般窗口的标题栏上有最小化、最大化按钮,用鼠标点击它可以将窗口缩小成图标或最大化到整个屏幕。使用QWidget类的方法也可达到同样的目的:

可用下列函数来获得窗口的状态:

print方法并不是用来显示窗体位置的,它是用于在控制台或终端打印输出信息的方法。如果想要显示窗体位置,可以使用窗体对象的属性或方法,如窗体对象的Location属性来获取窗体的位置信息,或者调用窗体对象的ShowDialog()方法来显示窗体。

需要注意的是,窗体的位置是相对于屏幕的,可以通过设置窗体的StartPosition属性来更改窗体的初始位置。此外,还可以通过窗体对象的Size属性来获取或设置窗体的大小。

如果需要在窗体中显示文字或其他控件,可以使用Windows窗体或WPF窗体,它们都提供了丰富的控件和布局管理器,可以方便地创建复杂的用户界面。

1、在qtdesigner,在界面空白处右键点击,选择布局->栅格布局可实现控件随窗口大小变化而变化。ctrl+r预览可见。

2、利用pyuic5 将ui文件转化成py文件,运行后发现,控件堆叠挤压在一起。浏览生成的py文件可知gridLayout没有设定大小,可以用setGeometry(QtCoreQRect(,,,,))来设定尺寸参数。

3、在主框架中重写resizeEvent函数,监测窗口变化,同时更改gridLayout的尺寸可实现控件随窗口的变化。

以上就是关于【PyQt】网格布局 QGridLayout全部的内容,包括:【PyQt】网格布局 QGridLayout、如何使用pyQT做pythonGUI界面、Python获取屏幕截图的几种方法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9282434.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存