初识PySide6/PyQt6:基础简介及环境的安装配置与使用(一)

2024-03-29 12:36

本文主要是介绍初识PySide6/PyQt6:基础简介及环境的安装配置与使用(一),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 一、基础简介
  • 二、PySide 6/PyQt 6具有的特性
  • 三、PySide 6/PyQt 6之间的区别
  • 四、搭建PyQt 6 环境
    • 4.1 安装PyQt6
    • 4.2 测试PyQt6环境
    • 4.3 pycharm 配置Qt Designer、PyUIC
  • 五、Qt Designer使用(基础开发流程实操)
  • 六、官方文档

在这里插入图片描述

一、基础简介

PySide / PyQt是C++的程序开发框架QT的Python实现。

在介绍PyQt框架之前,先介绍下什么是QT、GUI?

Qt 是跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。Qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器(Meta Object Compiler, moc))以及一些宏,Qt很容易扩展,并且允许真正的组件编程。

GUI 是图形用户界面(Graphical User Interface)的简称,是指采用图形方式显示的计算机操作用户界面。

在Python中经常使用的GUI控件集有PyQt、Tkinter(ttkbootstrap)、wxPython、Kivy、PyGUI和Libavg,其中PyQt是Qt官方专门为Python提供的GUI扩展。

开源软件需要解决的最大问题是如何处理开发人员使用开源软件来完成个人或商业目标,其中包括版权收益问题。PyQt 6 选择了GPL(自由软件协议),开发人员可以放心使用PyQt 6 开发软件。

二、PySide 6/PyQt 6具有的特性

  • 能跨平台运行在Windows、Linux和macOS等平台上。
  • 对QT库进行完全封装,基于高性能的Qt的GUI控件集。
  • 使用信号/槽机制进行通信。
  • 提供了一整套种类繁多的窗口控件。
  • 可以使用Qt成熟的IDE(如 Qt Designer)进行图形界面设计,并自动生成可执行的Python代码。
  • 底层是Qt的dll文件,基于C++运行,所以运行效率上得到了一定的保证。

PySide6:PySide6是Qt的另一个Python绑定,与PyQt类似,但使用了更宽松的许可证(LGPL)。它提供了与PyQt相似的功能和API,因此如果熟悉PyQt的使用,可以很容易地切换到PySide6。与PyQt相比,PySide6的社区支持可能相对较少,但它仍然是一个可行的选择。

三、PySide 6/PyQt 6之间的区别

  PySide 6/PyQt 6 都基于Qt6,他们之间的代码基本没有区别,其它方面有两个最重要的区别,掌握这两个区别可以帮助开发人员解决PySide 6/PyQt 6之间约95%的兼容性问题。

一是信号与槽的命名
PySide 6/PyQt 6关于信号与槽的命名不同,使用下面的方法可以统一起来:

from PySide6.QtCore import Signal, Slot
from PyQt6.QtCore import pyqtSignal as Signal, pyqtSlot as Slot

二是关于枚举的问题
PySide 6 为枚举的选项提供了快捷方式,比如Qt.DayOfWeek枚举星期一到星期日,在 PySide 6中星期三可以直接用快捷方式Qt.Wednesday表示,而PyQt 6 需要完整的使用Qt.DayOfWeek.Wednesday表示。解决这个问题最简单的方法是从Qt官方帮助文档中查询枚举的完整路径,另一个方法是使用qtpy模块,使用qtpy模块可以把PySide和PyQt统一起来,直接使用快捷方式。

通过以下方式:pip install qtpy

from qtpy.QtCore import Qt

四、搭建PyQt 6 环境

  使用pyqt6+pycharm

4.1 安装PyQt6

pip install pyqt6

在这里插入图片描述

4.2 测试PyQt6环境

安装完后对环境进行测试,以下是个testFirst.py的测试脚本:

import sys
from PyQt6 import QtWidgetsapp = QtWidgets.QApplication(sys.argv)
widget = QtWidgets.QWidget()
widget.resize(300, 200)
widget.setWindowTitle("Hello, Elaine")
widget.show()
sys.exit(app.exec())

在pycharm中运行,或者在Windows命令行窗口中运行如下命令:python testFirst.py

如果没有报错,弹出以下窗口,说明PyQt6环境安装成功。

在这里插入图片描述

4.3 pycharm 配置Qt Designer、PyUIC

- Qt Designer 是个强大、灵活的可视化GUI设计工具,使用简单,通过拖拽和单击就可以完成复杂的界面设计,并可随时预览效果图,生成的UI界面是个后缀为 .ui 的文件。

- PyUIC 的作用是把上述 .ui 的文件转换成 .py 文件。

首先安装pyqt6-tools工具,命令:

pip install pyqt6-tools

在这里插入图片描述

配置到pycharm:

  1. 打开pycharm,在 " File —> Settings "
    在这里插入图片描述
  2. " Settings—> Tools —> External Tools " 中点击 + 号,添加外部工具。
  3. 添加 Qt Designer

配置以下信息:

Name: "QT Designer",这个名字可以随意填
Group: "PyQt6"
Program: "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\Scripts\pyqt6-tools.exe" (自己安装的python路径)
Arguments: "designer"
Working directory: $FileDir$ 

在这里插入图片描述

  1. 添加 PyUIC

配置以下信息:

Name: "PyUIC",这个名字可以随意填
Group: "PyQt6"
Program: "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\Scripts\pyuic6.exe" (自己安装的python路径)
Arguments: "$FileName$ -o $FileNameWithoutExtension$.py"
Working directory: $FileDir$ 

在这里插入图片描述

  1. 检查是否设置成功(Tools里会新增PyQt6工具)

在这里插入图片描述

五、Qt Designer使用(基础开发流程实操)

  1. 点击运行QT Designer进入界面
    在这里插入图片描述

  2. Main Window 点击创建
    在这里插入图片描述

  3. 随意拖拽几个控件进去,保存窗体,我这里保存为MainWin.ui文件
    在这里插入图片描述

  4. 保存后关闭界面可以看到文件夹中多出了刚保存的文件(MainWin.ui)
    在这里插入图片描述

  5. 这个时候需要将 .ui 文件转换为 .py 文件,使用 PyUIC 即可
    在这里插入图片描述
    如果执行后有DeprecationWarning的警告信息,可以使用包管理工具如pip进行更新:pip install --upgrade PyQt6(多执行几次,后面就没报了)

  6. 执行后文件夹里会生成一个MainWin.py文件,如下:
    在这里插入图片描述

  7. 界面与逻辑分离
    界面文件: .py 文件是由 .ui 文件编译而来,所以当 .ui 文件发生变化时,对应的 .py 文件也会发生变化,将这种由 .ui 文件编译而来的 .py 文件称之为界面文件。
    逻辑文件:由于界面文件每次编译都会初始化,因此需要新建一个 .py 文件调用界面文件,这个新建的文件可以称之为逻辑文件。
    如果以后想要更新界面,只需要对 .ui 文件进行更新再编译成对应的 .py 文件即可,不需要再去动逻辑文件。

逻辑文件 “MainWinRun.py” 代码如下:

# -*- coding: utf-8 -*-import sys
from PyQt6.QtWidgets import QApplication, QMainWindow
from MainWin import *class MyMainWindow(QMainWindow, Ui_MainWindow):def __init__(self, parent=None):super(MyMainWindow, self).__init__(parent)self.setupUi(self)if __name__ == "__main__":app = QApplication(sys.argv)my_win = MyMainWindow()my_win.show()sys.exit(app.exec())

在这里插入图片描述

  1. 运行结果
    在这里插入图片描述

六、官方文档

  • QT官方文档:https://doc.qt.io/
  • Qt for Python: https://doc.qt.io/qtforpython-6/contents.html

后续大家就可以自己写功能DIY界面了~

在这里插入图片描述

这篇关于初识PySide6/PyQt6:基础简介及环境的安装配置与使用(一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/858610

相关文章

Linux换行符的使用方法详解

《Linux换行符的使用方法详解》本文介绍了Linux中常用的换行符LF及其在文件中的表示,展示了如何使用sed命令替换换行符,并列举了与换行符处理相关的Linux命令,通过代码讲解的非常详细,需要的... 目录简介检测文件中的换行符使用 cat -A 查看换行符使用 od -c 检查字符换行符格式转换将

使用Jackson进行JSON生成与解析的新手指南

《使用Jackson进行JSON生成与解析的新手指南》这篇文章主要为大家详细介绍了如何使用Jackson进行JSON生成与解析处理,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 核心依赖2. 基础用法2.1 对象转 jsON(序列化)2.2 JSON 转对象(反序列化)3.

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

Elasticsearch 在 Java 中的使用教程

《Elasticsearch在Java中的使用教程》Elasticsearch是一个分布式搜索和分析引擎,基于ApacheLucene构建,能够实现实时数据的存储、搜索、和分析,它广泛应用于全文... 目录1. Elasticsearch 简介2. 环境准备2.1 安装 Elasticsearch2.2 J

使用C#代码在PDF文档中添加、删除和替换图片

《使用C#代码在PDF文档中添加、删除和替换图片》在当今数字化文档处理场景中,动态操作PDF文档中的图像已成为企业级应用开发的核心需求之一,本文将介绍如何在.NET平台使用C#代码在PDF文档中添加、... 目录引言用C#添加图片到PDF文档用C#删除PDF文档中的图片用C#替换PDF文档中的图片引言在当

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

Java中List的contains()方法的使用小结

《Java中List的contains()方法的使用小结》List的contains()方法用于检查列表中是否包含指定的元素,借助equals()方法进行判断,下面就来介绍Java中List的c... 目录详细展开1. 方法签名2. 工作原理3. 使用示例4. 注意事项总结结论:List 的 contain

C#使用SQLite进行大数据量高效处理的代码示例

《C#使用SQLite进行大数据量高效处理的代码示例》在软件开发中,高效处理大数据量是一个常见且具有挑战性的任务,SQLite因其零配置、嵌入式、跨平台的特性,成为许多开发者的首选数据库,本文将深入探... 目录前言准备工作数据实体核心技术批量插入:从乌龟到猎豹的蜕变分页查询:加载百万数据异步处理:拒绝界面

Android中Dialog的使用详解

《Android中Dialog的使用详解》Dialog(对话框)是Android中常用的UI组件,用于临时显示重要信息或获取用户输入,本文给大家介绍Android中Dialog的使用,感兴趣的朋友一起... 目录android中Dialog的使用详解1. 基本Dialog类型1.1 AlertDialog(

Python使用自带的base64库进行base64编码和解码

《Python使用自带的base64库进行base64编码和解码》在Python中,处理数据的编码和解码是数据传输和存储中非常普遍的需求,其中,Base64是一种常用的编码方案,本文我将详细介绍如何使... 目录引言使用python的base64库进行编码和解码编码函数解码函数Base64编码的应用场景注意