用 PyQt 打造具有专业外观的GUI(上)

本文介绍了如何使用PyQt的布局管理器来创建具有专业外观的GUI应用程序。通过学习,你可以理解布局管理器的好处,如何在GUI上以编程方式布置窗口小部件,以及如何在不同类型的GUI中应用布局。内容涵盖了PyQt的QHBoxLayout、QVBoxLayout和QGridLayout等布局管理器的使用,帮助你创建响应式和美观的GUI。
摘要由CSDN通过智能技术生成

PyQt的布局管理器layout managers提供了一种用户友好且高效的方式,可以在GUI上排列图形组件或小部件。正确布置窗口小部件将使您的GUI应用程序看起来更加优美和专业。学习有效地做到这一点是您使用Python和PyQt进行GUI应用程序开发和运行的一项基本技能。

在本教程中,您将学习:

  • 使用PyQt的layout managers有什么好处

  • 如何使用PyQt的layout managers在GUI上以编程方式布置窗口小部件

  • 如何为您的GUI应用程序选择正确的layout manager

  • 如何在基于主窗口和基于对话框的应用程序中布置小部件

有了这些知识和技能,您就可以使用Python和PyQt创建具有专业外观的GUI应用程序。

在GUI上布置图形元素

在创建图形用户界面(GUI)应用程序时,一个常见的问题是如何使图形组件(按钮,菜单,工具栏,标签等)一致地放置在窗体和窗口上。此过程称为GUI布局(GUI layout,),这是创建GUI应用程序的重要步骤。

之前如果要在窗口上布置图形组件或窗口小部件,则可以采用以下方法之一:

  • 为窗口上的每个小部件确定并手动设置静态大小和位置。

  • 动态计算并设置每个小部件的大小和位置。

第一种方法相当直接,但是至少具有以下缺点:

  • 您的窗口将无法调整大小,以不同的屏幕分辨率显示它们时可能会导致问题。

  • 您的标签可能不能正确地支持本地化,因为给定文本的长度在不同语言之间会发生变化。

  • 您的窗口小部件在不同平台上的显示方式将有所不同,这使得编写看起来不错的多平台应用程序变得困难。

第二种方法更灵活。但是,它也有缺点:

  • 您必须进行大量手动计算才能确定每个小部件的正确大小和位置。

  • 您必须做一些额外的计算才能正确响应窗口大小调整。

  • 每当您修改窗口布局时,都必须重做所有计算。

即使您仍然可以使用这两种方法中的任何一种来布局GUI,大多数时候您可能还是希望使用由最先进的GUI框架或工具包实现的第三种且更方便的方法:布局管理器layout managers。注意:在某些GUI框架(例如Tkinter)中,布局管理器也称为geometry managers

layout managers会根据您的特定需求自动在GUI上排列小 部件。它避免了第一种方法的兼容性缺点以及第二种方法的复杂计算。

在以下各节中,您将了解PyQt的内置布局管理器以及如何使用它们有效地布局GUI应用程序的图形组件。

多样的PyQt布局形式

在PyQt中,小部件是用作GUI应用程序构建块的图形组件。将一堆小部件放在窗口上以创建GUI时,需要给它们一些顺序。您需要设置窗口小部件的大小和在窗口上的位置,还需要定义当用户调整基础窗口大小时它们的行为。

注意:PyQt5的官方文档中有一些不完整的部分。要解决此问题,您可以查看PyQt4文档,Qt for Python文档或原始Qt文档。

要在PyQt的窗口或窗体上排列小部件,可以使用以下技术:

  • 在小部件上使用.resize().move()来提供绝对大小和位置。

  • 重新实现.resizeEvent()并动态计算小部件的大小和位置。

  • 使用布局管理器,让他们为您做所有的计算和辛苦的工作。

这些技术通常对应于上一节中介绍的用于布局GUI的三种不同方法。

再说一次,动态计算尺寸和位置可能是个好方法,但是大多数时候,使用布局管理器会更好。在PyQt中,布局管理器是提供所需功能以自动管理布局中小部件的大小,位置和调整大小行为的类。

使用布局管理器,您可以自动在任何母部件、容器、小部件内排列子部件。使用布局管理器将确保您充分利用GUI上的可用空间,并确保当用户调整窗口大小时,应用程序仍然可用。

布局管理器充当小部件和其他布局的容器时,要将小部件添加到布局管理器,请在当前布局上调用.addWidget()。要将布局添加到另一个布局,请在当前布局上调用.addLayout()。您将在“嵌套布局以构建复杂的GUI”一节中更深入地了解嵌套布局。

将所有必需的小部件添加到布局管理器后,即可使用.setLayout()在给定的小部件上设置布局管理器。您可以在QWidget的任何子类(包括窗口或窗体)上设置布局管理器。

注意:QMainWindow

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值