当前位置:网站首页>PyQt5:第一章第1节:使用Qt组件创建一个用户界面-介绍
PyQt5:第一章第1节:使用Qt组件创建一个用户界面-介绍
2022-07-29 05:09:00 【晶格点阵】
目录
本章学习内容:
- 显示一个问候语
- 使用 Radio Button 组件
- Radio Button 分组
- 显示 checkbox 表单选项
- 显示两组 checkbox 组件
一、介绍
接下来,我们将学习一下如何使用 Qt 工具箱来创建一个 GUI 应用程序。Qt 工具箱,简称Qt,是由 Trolltech 开发的一个跨平台的应用UI框架,用于开发 GUI 应用程序。它可以运行在多个平台上,包括:Windows、maxOS、Linux和其他类UNIX平台。它有时通常也会被称为一个组件库,因为它指供了设计GUI所需要的各种组件,如:buttons、labels、textboxes、push buttons 和 list boxes。它包括跨平台的类的集合,集成了开发工具和一个跨平台的IDE。为了创建一个实时的应用程序,我们要使用 Python 绑定的 Qt 工具箱,即 PyQt。
二、PyQt
PyQt 是一个 Python 绑定的跨平台的框架,结合了所有 Qt 和 Python 的特性,所以称为 PyQt,你可以使用 Python 代码调用 Qt 库,也就是说可以使用 Python 语言编写 Qt GUI 应用程序。换句话说,PyQt 允许你通过 Python 代码访问 Qt 提供的所有功能。PyQt 依赖于 Qt 库来运行程序,因此当你安装 PyQt 时, 也会同时自动在你的机器上安装好 Qt 环境。
一个GUI应用程序可能包括一个主窗口和一些对话框,或者仅仅只有一个对话框。一个小的 GUI 应用程序通常包括至少一个对话框。一个对话框应用又包含了多个按钮组件。对话框中不能使用菜单栏、工具栏、状态栏,或者一个Central中心组件,然而一个主窗口应用程序可以包含以上所有组件。
对话框有以下两种类型:
- Modal(模态):是一个能够阻止用户与应用程序其他部分交互的对话框。用户只能在这种对话框中进行操作。直到该对话框关闭之前其他部分不可操作。
- Modeless(非模态):这种对话框与模态对话框相反。当一个非模态对话框打开时,用户可以自由的操作该对话框和应用程序中除此对话框以外的内容。
三、创建一个 GUI 应用程序的方法
有以下两种方法编写 GUI 应用程序:
- 从草图开始,使用一个简单的文本编辑器 text editor
- 使用 Qt Designer,一个可视化的设计工具,可以让你通过拖拽的方法快速创建一个用户界面
你将会在 PyQt 中使用 Qt Designer 来开发一个 GUI 应用程序,因为它是一个快速且简单的设计用户界面的方法,不需要编写太多的代码。因此,可以通过双击桌面上 Qt Designer 图标打开Qt Designer。
打开后,Qt Designer 将会询问你选择一个模板来开始你的应用,如下图所示:
Qt Designer 提供了一些针对不同种类应用的模板。你可以任意选择一个模板,然后点击 Create 按钮。
针对新建的应用程序,Qt Designer 提供以下预定义模板:
- Dialog with Buttons Bottom:这个模板会创建一个窗体,并在窗体的右下角显示一个 OK 按钮和一个 Cancel 按钮。
- Dialog with Buttons Right:这个模板会创建一个窗体,并在窗体的右上角显示一个 OK 按钮和一个 Cancel 按钮。
- Dialog without Buttons:这个模板会创建一个空窗体,你可以在窗体上放置组件。它的父类是 QDialog。
- Main Window:这个模板提供了一个主应用程序窗体,包含一个菜单栏一个工具栏,如果不需要还可以移除。
- Widget:这个模板会创建一个继承自 QWidget 类而不是 QDialog 类的窗体。
每一个 GUI 应用程序都有一个顶层的组件,其他组件都是该顶层组件的子组件。这个顶层的组件可以是 QDialog、QWidget 或者是 QMainWindow,可以根据需要选择相应的模板。如果你想要创建一个基于对话框模板的应用程序,那么对话框的顶层组件或它的父组件需要继承 QDialog 类。同理,如果要创建一个基于主窗体模板的应用,那么它的顶层组件就是 QMainWindow 类,如果要创建一个基于 Widget 的组件,你需要继承自 QWidget 类。正如上面提到的,用户界面中使用到的其余组件都是相关组件的子类。
Qt Designer 在上方显示了一个菜单栏和一个工具栏。在左侧工具箱中分组显示了开发应用程序所使用的各种组件。你需要做的就是将组件拖拽到窗体中,并放置到你想到放置的任何地方。你还可以布局组件,设置它们的样式,提供组件的初始属性,连接它们的信号和槽。
边栏推荐
- CMU15-213 Malloc Lab实验记录
- CryEngine3 调试Shader方法
- 三次握手四次挥手针对面试总结
- 【C语言系列】—深度解剖数据在内存中的存储(二)-浮点型
- 容器安全开源检测工具--问脉 VeinMind(镜像后门、恶意样本、敏感信息、弱口令等)
- 分配内存:malloc()和free()
- QT series - Installation
- vs2019编译cryengine失败问题处理
- Best practices for elastic computing in the game industry
- 321, Jingdong Yanxi × Nlpcc 2022 challenge starts!
猜你喜欢
直播预告|如何通过“智能边缘安全”提升企业免疫力?
一维数组练习
365天挑战LeetCode1000题——Day 036 二叉树剪枝 + 子数组和排序后的区间和 + 删除最短的子数组使剩余数组有序
365 day challenge leetcode 1000 questions - day 042 array sequence number conversion + relative ranking discretization processing
C language handwritten qq-ai version
Helm chart for Kubernetes
QtCreator+CMake编译器设置
MySQL的基础概念+数据库系统结构+拓展延申+基础命令学习
【C语言系列】— 字符串+部分转义字符详解+注释小技巧
365 day challenge leetcode 1000 questions - day 039 full binary tree inserter + find peak II + snapshot array
随机推荐
Day 5
数据库操作 Day 6
第一周总结
Side effects and sequence points
Cmu15-213 malloc lab experiment record
京东云金秋上云特惠进行中!扫码参与活动
QT series - Installation
科班同学真的了解未来的职业规划吗?
Cryengine3 debugging shader method
数千个数据库、遍布全国的物理机,京东物流全量上云实录 | 卓越技术团队访谈录
Occt learning 002 - environment construction
CryEngine5 Shader调试
串口通讯部分详解
365天挑战LeetCode1000题——Day 035 每日一题 + 二分查找 13
51万奖池邀你参战!第二届阿里云ECS CloudBuild开发者大赛来袭
MySQL的基础概念+数据库系统结构+拓展延申+基础命令学习
CryEngine技术
【活动预告】云上数字工厂与中小企业数字化转型创新论坛
C language handwritten qq-ai version
AiTalk创始人梁宇淇:镜像连接虚拟与现实的纽带