当前位置: 首页 > news >正文

【PyQT5教程】-01入门PyQT5

PyQT介绍

1.Qt

在这里插入图片描述

1.1 介绍

Qt(读作“cute”)是一个跨平台的C++应用程序开发框架,最初由挪威公司Trolltech(现在是Qt公司的一部分)开发。Qt提供了一系列工具和类库,用于开发图形界面应用程序、命令行工具和服务器端应用程序,它在不同的操作系统上具有高度的可移植性。

以下是Qt框架的一些主要特点和组成部分:

  1. 跨平台性: Qt的核心特点之一是其跨平台能力。开发者可以编写一次代码,然后在不同的操作系统上编译和运行,如Windows、macOS、Linux以及一些嵌入式系统。

  2. 图形界面设计: Qt提供了丰富的图形界面设计工具,允许开发者使用所见即所得(WYSIWYG)的方式创建用户界面。开发者可以使用Qt的图形界面设计器来拖拽和放置各种UI元素,然后使用C++代码进行逻辑编程。

  3. 信号与槽机制: Qt引入了一种独特的通信机制,称为信号与槽(Signals and Slots)。这个机制使得不同组件之间的交互更加灵活和解耦,从而简化了代码的维护和扩展。

  4. 模块化结构: Qt框架由多个模块组成,每个模块专注于不同的功能领域,如GUI、网络、数据库、多媒体、XML处理等。开发者可以根据需要选择性地使用这些模块,避免了不必要的代码依赖。

  5. 自动内存管理: Qt引入了称为“父子关系”的概念,通过这种关系,对象的内存管理可以更加自动化。当一个父对象被销毁时,它的所有子对象也会被自动销毁,从而避免了内存泄漏。

  6. 国际化和本地化支持: Qt具备强大的国际化和本地化支持,使开发者可以轻松地将应用程序本地化为不同的语言和地区。

  7. 商业和开源版本: Qt有商业许可和开源许可两种版本。开发者可以根据自己的需求选择适合的许可类型。开源版本下,开发者可以免费使用Qt进行开发,但需要遵守特定的开源许可条款。

Qt在许多领域得到了广泛的应用,包括桌面应用程序、移动应用程序、嵌入式系统、游戏开发等。由于其可移植性和强大的功能,Qt已经成为许多开发者的首选框架之一。

1.2 使用语言

  1. C++: C++是Qt的原生开发语言。Qt提供了丰富的C++类库和工具,使开发者能够轻松创建跨平台的图形界面应用程序。
  2. QML(Qt Meta-Object Language): QML是一种声明性的编程语言,用于创建图形界面的用户界面部分。它专注于界面元素的设计和布局,以及界面的交互。QML通常与C++结合使用,其中QML处理界面,而C++处理业务逻辑。
  3. Python: 通过Qt for Python(PyQt)或PySide,你可以使用Python语言开发使用Qt库的应用程序。这使得Python开发者能够利用Qt的功能来构建跨平台应用程序。
  4. JavaScript(在QML中): 在QML中,JavaScript用于处理界面的逻辑和交互。尽管这并不是传统意义上的Qt应用程序的主要开发语言,但它在QML界面中具有重要作用。
  5. 其他语言: 除了上述主要语言之外,Qt还有其他语言的绑定和接口,允许开发者使用不同的编程语言进行开发。这些语言可能包括Java、Ruby、C#等。

1.3 官网地址

https://doc.qt.io/qt-5/index.html

2.PyQt

2.1 介绍

PyQt是一个用于Python编程语言的Qt库的绑定。它允许开发者使用Python来创建图形界面应用程序,并利用Qt框架的功能和特性。Qt本身是一个C++应用程序开发框架,而PyQt则提供了Python语言的接口,使开发者能够在Python环境中轻松使用Qt的功能。

以下是关于PyQt的更详细介绍:

特点:

  1. 跨平台支持: 基于Qt的特性,PyQt也具有跨平台的能力,可以在多个操作系统上运行,包括Windows、macOS、Linux等。
  2. 丰富的UI控件: PyQt提供了丰富的UI控件,允许开发者创建各种复杂的用户界面。这些控件包括按钮、文本框、列表、表格、菜单等。
  3. 信号与槽机制: 与原生的Qt一样,PyQt支持信号与槽机制,使得不同部分之间的通信和交互变得更加灵活和解耦。这是PyQt中事件处理和交互的核心。
  4. QML支持: 类似于Qt,PyQt也支持使用QML语言创建界面。QML是一种声明性的语言,允许开发者通过简洁的语法来创建复杂的用户界面。
  5. 多媒体支持: PyQt提供了多媒体功能,包括音频和视频的播放、录制和处理。这使得开发者可以在应用程序中集成多媒体元素。
  6. 国际化和本地化: PyQt支持国际化和本地化,开发者可以轻松地将应用程序本地化为不同的语言和地区。

2.2 相关地址

文档相关地址: https://www.riverbankcomputing.com/software/pyqt/

比较不错的参考资料 : https://wiki.python.org/moin/PyQt/Tutorials

2.3 Python GUI开发选择

  1. Tkinter:
    • 简介:Python标准库中的GUI工具包,易于学习和使用,适用于简单的界面需求。
    • 官网:https://docs.python.org/3/library/tkinter.html
  2. PyQt:
    • 简介:Python的Qt库绑定,功能强大,适用于创建复杂的图形界面应用程序。
    • 官网:https://riverbankcomputing.com/software/pyqt
  3. PyGTK:
    • 简介:Python的GTK+库绑定,适用于Linux和Unix系统,提供丰富的控件和功能。
    • 官网:https://pygtk.org/
  4. wxPython:
    • 简介:Python的wxWidgets库绑定,适用于多种操作系统,具有本地外观和感觉。
    • 官网:https://wxpython.org/
  5. Kivy:
    • 简介:用于创建多点触控应用程序的Python库,适用于移动应用和触摸屏界面。
    • 官网:https://kivy.org/
  6. PySide:
    • 简介:Qt库的另一个Python绑定,用于创建强大的跨平台GUI应用。
    • 官网:https://wiki.qt.io/PySide
  7. FLTK:
    • 简介:C++图形库FLTK的Python绑定,适用于需要简洁用户界面的应用。
    • 官网:https://www.fltk.org/
  8. Dear PyGui:
    • 简介:现代Python GUI框架,支持GPU渲染,用于数据可视化和科学应用。
    • 官网:https://dearpygui.org/
  9. BeeWare:
    • 简介:一组工具和库,允许在Python中编写跨平台应用,包括Toga和其他工具。
    • 官网:https://beeware.org/

安装方法

1.PyCharm安装方法

确定pycharm是使用管理员权限开启的

在这里插入图片描述

1.1 新建一个Python项目

在这里插入图片描述

检查项目工具

在这里插入图片描述

1.2 安装pyQT5

pip install pyqt5 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install pyqt5-tools -i https://pypi.tuna.tsinghua.edu.cn/simple

在这里插入图片描述

1.3 pip镜像源

阿里云 https://mirrors.aliyun.com/pypi/simple/
中国科技大学 https://pypi.mirrors.ustc,edu.cn/simple/
豆解(douban) https://pypi.douban.com/simple/
清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/
中国科学技术大学 https://pypi.mirrors.ustc.edu.cn/simple/

1.4 修改电脑的pip镜像源

(1) C:\Users\你的管理员名称文件夹,创建一个pip文件夹

(2)创建一个pip.ini文件

(3)将以下代码复制黏贴到你的pip.ini文件中

[global]
timeout=40
index-url=https://pypi.tuna.tsinghua.edu.cn/simple/
extra-index-url=http://mirrors.aliyun.com/pypi/simple/http://pypi.douban.com/simplehttp://pypi.mirrors.ustc.edu.cn/simple/[install]
trusted-host=pypi.tuna.tsinghua.edu.cnmirrors.aliyun.compypi.douban.compypi.mirrors.ustc.edu.cn

(4) 验证你的pip配置是否正确

pip install list

在这里插入图片描述

PyQT第一个案例

import sysfrom PyQt5.QtWidgets import QApplication, QWidgetif __name__ == '__main__':# 1. 创建QT对象# sys.argv : python运行参数app = QApplication(sys.argv)# 创建一个控件对象w = QWidget()# 给控件设置标题w.setWindowTitle("第一个程序案例")# 显示控件w.show()# 开启一个QT程序app.exec_()

在这里插入图片描述

1.pyqt模块介绍

PyQt5是一个用于Python的Qt库绑定,提供了丰富的功能和工具,用于创建跨平台的图形界面应用程序。PyQt5分为多个模块,每个模块专注于不同的功能领域。以下是PyQt5的一些主要模块的简要介绍:

  1. QtCore:!!重要!!
    • 提供了Qt核心的非GUI功能,如事件循环、定时器、线程、信号和槽等。
    • 用于处理与GUI无关的任务,是其他模块的基础。
  2. QtGui:!!重要!!
    • 包含了许多与GUI相关的类,如绘图、颜色、字体、窗口管理、剪贴板等。
    • 提供了创建图形界面所需的基本组件和功能。
  3. QtWidgets:!!重要!!
    • 包含了各种UI控件,如按钮、文本框、标签、表格、列表、窗口等。
    • 用于创建用户界面的各种元素。
  4. QtMultimedia:
    • 提供了多媒体功能,包括音频和视频的播放、录制、处理等。
    • 允许在应用程序中集成多媒体元素。
  5. QtNetwork:
    • 用于网络编程,提供了TCP、UDP、HTTP等网络协议的支持。
    • 允许应用程序与远程服务器通信。
  6. QtSql:
    • 提供了数据库访问的类,可以与各种数据库进行交互。
    • 允许应用程序执行数据库查询、插入、更新等操作。
  7. QtXml:
    • 提供了处理XML数据的类,用于读取、写入和操作XML文件。
    • 适用于需要处理结构化数据的应用。
  8. QtWebEngine:
    • 提供了Web引擎功能,允许在应用程序中嵌入Web页面。
    • 可以用于创建内置的浏览器功能。
  9. QtPrintSupport:
    • 提供了打印支持,用于将应用程序的内容输出到打印机。
  10. QtOpenGL:
    • 提供了OpenGL集成,允许在应用程序中使用3D图形和渲染。
  11. QtTest:
    • 提供了单元测试的支持,用于测试应用程序的不同部分。

1.2 参考地址

可以参考PyQt官网的所有模块地址: https://www.riverbankcomputing.com/static/Docs/PyQt5/module_index.htmlfref-module-index

C++具体实现的API文档,地址 : https://doc.qt.io/gt-5/qtwidgets-module.html

相关文章:

【PyQT5教程】-01入门PyQT5

PyQT介绍 1.Qt 1.1 介绍 Qt(读作“cute”)是一个跨平台的C应用程序开发框架,最初由挪威公司Trolltech(现在是Qt公司的一部分)开发。Qt提供了一系列工具和类库,用于开发图形界面应用程序、命令行工具和服务…...

判断字符串s是否为字符串t的子序列

题目:给定字符串 s 和 t ,判断 s 是否为 t 的子序列。 字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一…...

数据结构之队列的实现(附源码)

目录 一、队列的概念及结构 二、队列的实现 拓展:循环队列 三、初学的队列以及栈和队列结合的练习题 一、队列的概念及结构 队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(Fi…...

[A题]2023 年全国大学生数学建模比赛思路、代码更新中.....

💥1 概述 构建以新能源为主体的新型电力系统,是我国实现“碳达峰”“碳中和”目标的一项重要措施。塔式太阳能光热发电是一种低碳环保的新型清洁能源技术[1]。定日镜是塔式太阳能光热发电站(以下简称塔式电站)收集太阳能的基本组…...

Tailwind 练手项目

Tailwind 练手项目 用到的技巧 Tailwind CSS 速成 应该都提过了,我不记得这里有什么特别新的知识 整体完成图大概这样: 一个纯静态页面,没有做 JS 之类的特效,不过做了移动端适配,说实话我写到一半的时候改了不少………...

SpringMVC_SSM整合

一、回顾SpringMVC访问接口流程 1.容器加载分析 容器分析 手动注册WebApplicationContext public class ServletConfig extends AbstractDispatcherServletInitializer {Overrideprotected WebApplicationContext createServletApplicationContext() {//获取SpringMVC容器An…...

【操作系统】电脑上没有IIS怎么办

文章目录 前言一、查看二、解决 前言 有的新机刚开始在计算机-管理-服务下没有IIS网络服务怎么办。 一、查看 桌面计算机/此电脑 鼠标右键:管理 服务和应用 发现没有IIS 二、解决 控制面板 程序和功能 启动或关闭Windows功能 IIS相关的所有功能选中&#xff…...

【vue】vue项目中批量下载文件并打压缩包

前言 一开始用的是循环单个文件下载,即从后台获取到文件url列表,循环对每个url单独进行下载,这样的问题是每调用一次下载,浏览器都会进行“另存为”的弹框,很麻烦!!! 关闭“下载前…...

Linux中的软件管家——yum

目录 ​编辑 一,软件安装的方式 二,对yum的介绍 1.yum的作用 2,yum的库 三,yum下载软件的操作 1.yumlist 2.yuminstall 3.yumremove 四,yum源的转换 一,软件安装的方式 软件安装的方式大概分为三种…...

安卓绘制原理概览

绘制原理 Android 程序员都知道 Android 的绘制流程分为 Measure、Layout、Draw 三步骤,其中 Measure 负责测量 View 的大小Layout 负责确定 View 的位置Draw 负责将 View 画在屏幕上 由 ViewRootImpl 实现的 performTraversal 方法是 Measure、layout、draw 的真正…...

接口测试工具开发文档

1 开发规划 1.1 开发人员 角 色 主要职责 负责模块 人员 备注 n xxx模块 xxx 1.2 开发计划 <附开发计划表> 1.3 开发环境和工具 开发工具 工具 作用 Notepad 编辑器 Perl 解释器 2 总体设计 设计思路&#xff1a;因为测试app和server。首先必须…...

面试题速记:JavaScript有哪些数据类型,它们的区别是?

JavaScript有哪些数据类型&#xff0c;它们的区别&#xff1f; JavaScript共有八种数据类型&#xff0c;分别是 Undefined、Null、Boolean、Number、String、Object、Symbol、BigInt。 其中 Symbol 和 BigInt 是ES6 中新增的数据类型&#xff1a; ●Symbol 代表创建后独一无二…...

Spring Cloud面试题

为什么需要学习Spring Cloud 不论是商业应用还是用户应用&#xff0c;在业务初期都很简单&#xff0c;我们通常会把它实现为单体结构的应用。但是&#xff0c;随着业务逐渐发展&#xff0c;产品思想会变得越来越复杂&#xff0c;单体结构的应用也会越来越复杂。这就会给应用带…...

计算机网络自顶向下-web页面请求历程

1. 准备: DHCP、 UDP、 IP 和以太网 假定 Bob 启动他的便携机&#xff0c;然后将其用一根以太网电缆连接到学校的以太网交换机 &#xff0c; 交换机与学校的路由器相连。学校的路由器与一个 ISP 连接&#xff0c; 本例中 ISP 为 comcast.net &#xff0c;为学校提供了 DNS 服务…...

打造西南交通感知新范式,闪马智能携手首讯科技落地创新中心

9月4日&#xff0c;2023年中国国际智能产业博览会&#xff08;以下简称“智博会”&#xff09;在重庆拉开帷幕。大会期间&#xff0c;由上海闪马智能科技有限公司&#xff08;以下简称“闪马智能”&#xff09;与重庆首讯科技股份有限公司&#xff08;以下简称“首讯科技”&…...

Android11去掉Settings中的网络和互联网一级菜单

碰到一个不要wifi不要蓝牙的项目&#xff0c;客户要求去掉Settings中的网络和互联网一级菜单&#xff0c;因为硬件都不贴&#xff0c;所以软件对应也要去掉。 我们可以根据packages/apps/Settings/res/xml/top_level_settings.xml的布局文件找到TopLevelNetworkEntryPreferenc…...

基于Python开发的五子棋小游戏(源码+可执行程序exe文件+程序配置说明书+程序使用说明书)

一、项目简介 本项目是一套基于Python开发的五子棋小游戏&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Python学习者。 包含&#xff1a;项目源码、项目文档、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&a…...

JDBC入门到精通-10w总结

JDBC核心技术 笔记是以尚硅谷讲师宋红康JDBC课程为基础&#xff0c;加入自身学习体会&#xff0c;略有修改 第1章&#xff1a;JDBC概述 JDBC是java应用程序和数据库之间的桥梁。JDBC提供一组规范&#xff08;接口&#xff09;。向上是面向应用API&#xff0c;共应用程序使用。向…...

Linux之查看so/bin依赖(三十一)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…...

day-45 代码随想录算法训练营(19)动态规划 part 07

70.爬楼梯&#xff08;进阶&#xff09; 分析&#xff1a;基本动态规划转换为完全背包&#xff0c;因为1、2 两种上楼梯方式是无限选择的 思路&#xff1a; 1. j 表示 容量为 j 时&#xff0c;装满有dp[j]种方法2. dp[j]dp[j-nums[i]]3. 初始化 dp[0]1,dp[1]14. 遍历顺序&am…...

Admin.Net中的消息通信SignalR解释

定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...

通过Wrangler CLI在worker中创建数据库和表

官方使用文档&#xff1a;Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后&#xff0c;会在本地和远程创建数据库&#xff1a; npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库&#xff1a; 现在&#xff0c;您的Cloudfla…...

学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1

每日一言 生活的美好&#xff0c;总是藏在那些你咬牙坚持的日子里。 硬件&#xff1a;OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写&#xff0c;"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...

Java入门学习详细版(一)

大家好&#xff0c;Java 学习是一个系统学习的过程&#xff0c;核心原则就是“理论 实践 坚持”&#xff0c;并且需循序渐进&#xff0c;不可过于着急&#xff0c;本篇文章推出的这份详细入门学习资料将带大家从零基础开始&#xff0c;逐步掌握 Java 的核心概念和编程技能。 …...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建

华为云FlexusDeepSeek征文&#xff5c;DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色&#xff0c;华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型&#xff0c;能助力我们轻松驾驭 DeepSeek-V3/R1&#xff0c;本文中将分享如何…...

大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计

随着大语言模型&#xff08;LLM&#xff09;参数规模的增长&#xff0c;推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长&#xff0c;而KV缓存的内存消耗可能高达数十GB&#xff08;例如Llama2-7B处理100K token时需50GB内存&a…...

Android第十三次面试总结(四大 组件基础)

Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成&#xff0c;用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机&#xff1a; ​onCreate()​​ ​调用时机​&#xff1a;Activity 首次创建时调用。​…...

AGain DB和倍数增益的关系

我在设置一款索尼CMOS芯片时&#xff0c;Again增益0db变化为6DB&#xff0c;画面的变化只有2倍DN的增益&#xff0c;比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析&#xff1a; 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...

排序算法总结(C++)

目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指&#xff1a;同样大小的样本 **&#xff08;同样大小的数据&#xff09;**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...

深度学习水论文:mamba+图像增强

&#x1f9c0;当前视觉领域对高效长序列建模需求激增&#xff0c;对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模&#xff0c;以及动态计算优势&#xff0c;在图像质量提升和细节恢复方面有难以替代的作用。 &#x1f9c0;因此短时间内&#xff0c;就有不…...