PyQT介绍
1.Qt
1.1 介绍
Qt(读作“cute”)是一个跨平台的C++应用程序开发框架,最初由挪威公司Trolltech(现在是Qt公司的一部分)开发。Qt提供了一系列工具和类库,用于开发图形界面应用程序、命令行工具和服务器端应用程序,它在不同的操作系统上具有高度的可移植性。
以下是Qt框架的一些主要特点和组成部分:
-
跨平台性: Qt的核心特点之一是其跨平台能力。开发者可以编写一次代码,然后在不同的操作系统上编译和运行,如Windows、macOS、Linux以及一些嵌入式系统。
-
图形界面设计: Qt提供了丰富的图形界面设计工具,允许开发者使用所见即所得(WYSIWYG)的方式创建用户界面。开发者可以使用Qt的图形界面设计器来拖拽和放置各种UI元素,然后使用C++代码进行逻辑编程。
-
信号与槽机制: Qt引入了一种独特的通信机制,称为信号与槽(Signals and Slots)。这个机制使得不同组件之间的交互更加灵活和解耦,从而简化了代码的维护和扩展。
-
模块化结构: Qt框架由多个模块组成,每个模块专注于不同的功能领域,如GUI、网络、数据库、多媒体、XML处理等。开发者可以根据需要选择性地使用这些模块,避免了不必要的代码依赖。
-
自动内存管理: Qt引入了称为“父子关系”的概念,通过这种关系,对象的内存管理可以更加自动化。当一个父对象被销毁时,它的所有子对象也会被自动销毁,从而避免了内存泄漏。
-
国际化和本地化支持: Qt具备强大的国际化和本地化支持,使开发者可以轻松地将应用程序本地化为不同的语言和地区。
-
商业和开源版本: Qt有商业许可和开源许可两种版本。开发者可以根据自己的需求选择适合的许可类型。开源版本下,开发者可以免费使用Qt进行开发,但需要遵守特定的开源许可条款。
Qt在许多领域得到了广泛的应用,包括桌面应用程序、移动应用程序、嵌入式系统、游戏开发等。由于其可移植性和强大的功能,Qt已经成为许多开发者的首选框架之一。
1.2 使用语言
- C++: C++是Qt的原生开发语言。Qt提供了丰富的C++类库和工具,使开发者能够轻松创建跨平台的图形界面应用程序。
- QML(Qt Meta-Object Language): QML是一种声明性的编程语言,用于创建图形界面的用户界面部分。它专注于界面元素的设计和布局,以及界面的交互。QML通常与C++结合使用,其中QML处理界面,而C++处理业务逻辑。
- Python: 通过Qt for Python(PyQt)或PySide,你可以使用Python语言开发使用Qt库的应用程序。这使得Python开发者能够利用Qt的功能来构建跨平台应用程序。
- JavaScript(在QML中): 在QML中,JavaScript用于处理界面的逻辑和交互。尽管这并不是传统意义上的Qt应用程序的主要开发语言,但它在QML界面中具有重要作用。
- 其他语言: 除了上述主要语言之外,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的更详细介绍:
特点:
- 跨平台支持: 基于Qt的特性,PyQt也具有跨平台的能力,可以在多个操作系统上运行,包括Windows、macOS、Linux等。
- 丰富的UI控件: PyQt提供了丰富的UI控件,允许开发者创建各种复杂的用户界面。这些控件包括按钮、文本框、列表、表格、菜单等。
- 信号与槽机制: 与原生的Qt一样,PyQt支持信号与槽机制,使得不同部分之间的通信和交互变得更加灵活和解耦。这是PyQt中事件处理和交互的核心。
- QML支持: 类似于Qt,PyQt也支持使用QML语言创建界面。QML是一种声明性的语言,允许开发者通过简洁的语法来创建复杂的用户界面。
- 多媒体支持: PyQt提供了多媒体功能,包括音频和视频的播放、录制和处理。这使得开发者可以在应用程序中集成多媒体元素。
- 国际化和本地化: PyQt支持国际化和本地化,开发者可以轻松地将应用程序本地化为不同的语言和地区。
2.2 相关地址
文档相关地址: https://www.riverbankcomputing.com/software/pyqt/
比较不错的参考资料 : https://wiki.python.org/moin/PyQt/Tutorials
2.3 Python GUI开发选择
- Tkinter:
- 简介:Python标准库中的GUI工具包,易于学习和使用,适用于简单的界面需求。
- 官网:https://docs.python.org/3/library/tkinter.html
- PyQt:
- 简介:Python的Qt库绑定,功能强大,适用于创建复杂的图形界面应用程序。
- 官网:https://riverbankcomputing.com/software/pyqt
- PyGTK:
- 简介:Python的GTK+库绑定,适用于Linux和Unix系统,提供丰富的控件和功能。
- 官网:https://pygtk.org/
- wxPython:
- 简介:Python的wxWidgets库绑定,适用于多种操作系统,具有本地外观和感觉。
- 官网:https://wxpython.org/
- Kivy:
- 简介:用于创建多点触控应用程序的Python库,适用于移动应用和触摸屏界面。
- 官网:https://kivy.org/
- PySide:
- 简介:Qt库的另一个Python绑定,用于创建强大的跨平台GUI应用。
- 官网:https://wiki.qt.io/PySide
- FLTK:
- 简介:C++图形库FLTK的Python绑定,适用于需要简洁用户界面的应用。
- 官网:https://www.fltk.org/
- Dear PyGui:
- 简介:现代Python GUI框架,支持GPU渲染,用于数据可视化和科学应用。
- 官网:https://dearpygui.org/
- 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/simple
http://pypi.mirrors.ustc.edu.cn/simple/
[install]
trusted-host=
pypi.tuna.tsinghua.edu.cn
mirrors.aliyun.com
pypi.douban.com
pypi.mirrors.ustc.edu.cn
(4) 验证你的pip配置是否正确
pip install list
PyQT第一个案例
import sys
from PyQt5.QtWidgets import QApplication, QWidget
if __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的一些主要模块的简要介绍:
- QtCore:!!重要!!
- 提供了Qt核心的非GUI功能,如事件循环、定时器、线程、信号和槽等。
- 用于处理与GUI无关的任务,是其他模块的基础。
- QtGui:!!重要!!
- 包含了许多与GUI相关的类,如绘图、颜色、字体、窗口管理、剪贴板等。
- 提供了创建图形界面所需的基本组件和功能。
- QtWidgets:!!重要!!
- 包含了各种UI控件,如按钮、文本框、标签、表格、列表、窗口等。
- 用于创建用户界面的各种元素。
- QtMultimedia:
- 提供了多媒体功能,包括音频和视频的播放、录制、处理等。
- 允许在应用程序中集成多媒体元素。
- QtNetwork:
- 用于网络编程,提供了TCP、UDP、HTTP等网络协议的支持。
- 允许应用程序与远程服务器通信。
- QtSql:
- 提供了数据库访问的类,可以与各种数据库进行交互。
- 允许应用程序执行数据库查询、插入、更新等操作。
- QtXml:
- 提供了处理XML数据的类,用于读取、写入和操作XML文件。
- 适用于需要处理结构化数据的应用。
- QtWebEngine:
- 提供了Web引擎功能,允许在应用程序中嵌入Web页面。
- 可以用于创建内置的浏览器功能。
- QtPrintSupport:
- 提供了打印支持,用于将应用程序的内容输出到打印机。
- QtOpenGL:
- 提供了OpenGL集成,允许在应用程序中使用3D图形和渲染。
- 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