初识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 QtWidgets

app = 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界面了~

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/498562.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

从AutoCAD切换到DraftSight,您需要了解的信息

如果您正在使用其他二维软件进行设计,那么切换到DraftSight是很容易的,DraftSight具有您熟悉的界面和命令,同时还可以定制软件界面以符合您的使用习惯。 关于DraftSight DraftSight利用强大的2D绘图和3D建模功能,优化你的设计流…

在word中显示Euclid Math One公式的问题及解决(latex公式,无需插件)

问题:想要在word中显示形如latex中的花体字母 网上大多解决办法是安装Euclid Math One。安装后发现单独的符号插入可行,但是公式中选择该字体时依然显示默认字体。 解决办法:插入公式后,勾选左上角的latex 在公式块中键入latex代码…

PowerBI加权计算权重

1.打开主页,点击快速度量值 2.计算里面 选择计算:每个类别的加权平均值 3.就是添加数据,基值(就是你要计算的值)粗细(就是你要用那个值计算权重)类别(就是你是要乘以那个类别&#x…

C语言数据结构基础——排序

目录 1.插入排序 2.冒泡排序 3. 堆排序 4.希尔排序 5.直接选择排序 6.快速排序☆☆ 6.1快速排序基础 6.2关于快速排序的时间复杂度 6.3随机数法和三数取中法 6.4其他的单趟实现方法 6.4.1挖坑法 6.4.2前后指针版快速排序☆ 6.4.3非递归实现快排☆ 7.归并排序 7.1递归…

|行业洞察·碳纤维|《中国碳纤维行业现状与发展趋势-39页》

报告内容的详细解读: 1. 战略性新材料的重要性 碳纤维是一种轻质高强的高性能纤维材料,在航空航天、国防军工、高端装备制造等领域具有不可替代的作用。碳纤维的应用有助于减少能源消耗和降低碳排放,符合全球可持续发展的要求。 |趋势洞察…

2024/03/28(C++·day4)

一、思维导图 二、练习题 1、写出三种构造函数&#xff0c;算术运算符、关系运算符、逻辑运算符重载尝试实现自增、自减运算符的重载 #include <iostream>using namespace std;// 构造函数示例 class MyClass { private:int data; public:// 默认构造函数MyClass() {da…

【3DsMax+Pt】练习案例

目录 一、在3DsMax中展UV 二、在Substance 3D Painter中绘制贴图 一、在3DsMax中展UV 1. 首先创建如下模型 2. 选中如下三条边线作为接缝 重置剥 发现如下部分还没有展开 再选一条边作为接缝 再次拨开 拨开后的UV如下 二、在Substance 3D Painter中绘制贴图 1. 新建项目&am…

Java Swing游戏开发学习20

内容来自RyiSnow视频讲解 这一节讲的是Monster野兽、就是常说的游戏中的怪&#xff0c;打怪升级的那个怪。 前言 本节目标 实现怪处理碰撞和伤害&#xff08;当玩家player碰到怪会掉血&#xff09; 实现 添加怪到窗口 这里只使用了2张图片&#xff0c;每个方向移动都是用…

C语言用if语句设计选择结构程序

在C语言中&#xff0c;if语句是一种常用的选择结构语句&#xff0c;用于根据条件选择性地执行不同的代码块。if语句的设计使得程序可以根据条件的真假进行分支控制&#xff0c;从而实现灵活的程序逻辑。本文将深入介绍C语言中如何使用if语句设计选择结构程序&#xff0c;包括if…

激光焊接机在不锈钢三角阀制造中的应用与发展

不锈钢三角阀激光焊接机是一种专门用于焊接不锈钢三角阀的高效、精准设备。这种设备在不锈钢三角阀的制造过程中起到了至关重要的作用&#xff0c;其应用主要体现在以下几个方面&#xff1a; ​ 一、激光焊接机在不锈钢三角阀制造中的应用 激光焊接机以其独特的优势&#xff…

金属板材成型仿真软件 Altair® Inspire™ Form,完整的冲压仿真环境

Inspire Form 是一个完整的冲压仿真环境&#xff0c;产品设计师和工艺工程师可以使用该环境&#xff0c;有效地优化设计、对稳健的制造进行仿真、降低材料成本。 借助快速简便的可行性模块&#xff0c;用户可以在几秒钟内完成零部件分析&#xff0c;从而在产品开发早期阶段预测…

李宏毅【生成式AI导论 2024】第6讲 大型语言模型修炼_第一阶段_ 自我学习累积实力

背景知识:机器怎么学会做文字接龙 详见:https://blog.csdn.net/qq_26557761/article/details/136986922?spm=1001.2014.3001.5501 在语言模型的修炼中,我们需要训练资料来找出数十亿个未知参数,这个过程叫做训练或学习。找到参数后,我们可以使用函数来进行文字接龙,拿…

【Pt】马灯贴图绘制过程 02-制作锈迹

目录 一、边缘磨损效果 二、刮痕效果 三、边缘磨损与刮痕的混合 四、锈迹效果 本篇效果&#xff1a; 一、边缘磨损效果 将智能材质“Iron Forge Old” 拖入图层 打开“Iron Forge Old” 文件夹&#xff0c;选中“Sharpen”&#xff08;锐化&#xff09;&#xff0c;增大“…

fpga 通过axi master读写PS侧DDR的仿真和上板测试

FPGA和ARM数据交互是ZYNQ系统中非常重要的内容。PS提供了供FPGA读写的AXI-HP接口用于两者的高速通信和数据交互。一般的&#xff0c;我们会采用AXI DMA的方式去传输数据&#xff0c;DMA代码基本是是C编写&#xff0c;对于FPGA开发者来说不利于维护和debug。本文提供一种手写AXI…

《思考,快与慢》揭示了决策过程中直觉反应与理性分析的关系 - 三余书屋 3ysw.net

思考&#xff0c;快与慢 你好&#xff0c;今天我们要分享的是《思考&#xff0c;快与慢》。作者是丹尼尔卡尼曼&#xff0c;2002年诺贝尔经济学奖获得者。他开辟了经济学中的一个新分支——行为经济学。在《思考&#xff0c;快与慢》这部作品中&#xff0c;他深入探讨了行为经…

JVM篇详细分析

JVM总体图 程序计数器&#xff1a; 线程私有的&#xff0c;每个线程一份&#xff0c;内部保存字节码的行号&#xff0c;用于记录正在执行字节码指令的地址。&#xff08;可通过javap -v XX.class命令查看&#xff09; java堆&#xff1a; 线程共享的区域&#xff0c;用来保存对…

搭建企业微信知识库,这些注意事项你必须知道

| 企业微信知识库是什么&#xff1f; 简单来说&#xff0c;企业微信知识库就是一个集中存储、管理和分享企业内部信息的置于企业微信中的系统。你可以把它想象成一个超级大的“资料库”&#xff0c;里面装满了公司的各种知识、文档、流程、经验等等。这个“资料库”不仅方便员工…

劳保鞋厂家与您聊聊:从事电力行业工作人员穿什么功能的劳保鞋

电力行业属于危险系数较高的行业&#xff0c;工作人员在工作中面临电力的潜在危险&#xff0c;如电击、高温、机械伤害、高空作业等风险。这就要有专业的安全设备&#xff0c;才能尽可能的保护电力工作人员的安全&#xff0c;真真正正起到防范的作用。因此&#xff0c;穿着合适…

学习或复习电路的game推荐:nandgame(NAND与非门游戏)、Turing_Complete(图灵完备)、logisim工具

https://www.nandgame.com/ 免费 https://store.steampowered.com/app/1444480/Turing_Complete/ 收费&#xff0c;70元。据说可以导出 Verilog &#xff01; logisim及其衍生版本 都需要安装java环境。 http://www.cburch.com/logisim/ 是原版&#xff0c; 下载页面&#…

Java的静态代理与jdk动态代理

代理 我们经常利用代理进行解耦以及控制对实际对象的访问等工作。例如&#xff0c;我们可以通过代理对方法的调用进行更精细的控制&#xff08;例如加上日志、权限控制等&#xff09;&#xff0c;而无需修改实际对象的代码。代理的作用是无侵入式的给代码增加功能。有些事情是…
最新文章