当前位置:网站首页>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 在上方显示了一个菜单栏和一个工具栏。在左侧工具箱中分组显示了开发应用程序所使用的各种组件。你需要做的就是将组件拖拽到窗体中,并放置到你想到放置的任何地方。你还可以布局组件,设置它们的样式,提供组件的初始属性,连接它们的信号和槽。
边栏推荐
- 题解:在一个排序数组中查找元素第一个和最后一个的位置 (个人笔记)
- 游戏行业弹性计算最佳实践
- Xiaolu Inn - Trailer
- 副作用和序列点
- JD cloud and Forrester consulting released a hybrid cloud report that cloud Nativity has become a new engine driving industrial development
- QML custom tabbar
- C language first level pointer
- CryEngine3 调试Shader方法
- 科班同学真的了解未来的职业规划吗?
- 数据泄漏、删除事件频发,企业应如何构建安全防线?
猜你喜欢

365天挑战LeetCode1000题——Day 040 设计跳表 + 避免洪水泛滥 + 查找大小为 M 的最新分组 + 销售价值减少的颜色球

【C语言系列】— 字符串+部分转义字符详解+注释小技巧

阿里云张新涛:异构计算为数字经济提供澎湃动力

阿里云架构师梁旭:MES on 云盒,助力客户快速构建数字工厂

研发效能生态完整图谱&DevOps工具选型必看

【剑指offer】— 详解库函数atoi以及模拟实现atoi函数

预约中,2022京东云产业融合新品发布会线上开启

Yangyonglin, vice president of Rushi Technology: when traditional industries encounter "digital space"
![[event preview] cloud digital factory and digital transformation and innovation forum for small and medium-sized enterprises](/img/6f/f7c5d605ea9b7b9e7c49ac716492ef.jpg)
[event preview] cloud digital factory and digital transformation and innovation forum for small and medium-sized enterprises

直播预告|如何通过“智能边缘安全”提升企业免疫力?
随机推荐
Best practices for elastic computing in the game industry
容器安全开源检测工具--问脉 VeinMind(镜像后门、恶意样本、敏感信息、弱口令等)
365天挑战LeetCode1000题——Day 041 二分查找完结纪念 + 第 N 个神奇数字 + 在线选举
C language one-dimensional array
365天挑战LeetCode1000题——Day 038 公交站间的距离 + 基于时间的键值存储 + 转变数组后最接近目标值的数组和 + 有界数组中指定下标处的最大值
QT series - Installation
水一篇图的拓扑排序
预约中,2022京东云产业融合新品发布会线上开启
C语言文件操作
365 day challenge leetcode 1000 questions - day 037 elements and the maximum side length of squares less than or equal to the threshold + the number of subsequences that meet the conditions
阿里云联合鼎捷软件发布云上数字工厂解决方案,实现云MES系统本地化部署
数据库操作 Day 6
QML control: combobox
365天挑战LeetCode1000题——Day 039 完全二叉树插入器 + 寻找峰值 II + 快照数组
510000 prize pool invites you to fight! The second Alibaba cloud ECS cloudbuild developer competition is coming
OCCT学习002-----环境搭建
C语言 一级指针
Bubble sort c language
How rimworld uploads creative workshops through steamcmd
WDDM learning