初识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界面了~

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

基于单片机病房呼叫系统数码管显示房号设计

**单片机设计介绍,基于单片机病房呼叫系统数码管显示房号设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机病房呼叫系统数码管显示房号设计概要主要涵盖了利用单片机技术实现病房呼叫系统,并…

5.6 物联网RK3399项目开发实录-Android开发之U-Boot 编译及使用(wulianjishu666)

物联网入门到项目实干案例下载: https://pan.baidu.com/s/1fHRxXBqRKTPvXKFOQsP80Q?pwdh5ug --------------------------------------------------------------------------------------------------------------------------------- U-Boot 使用 前言 RK U-B…

修改nuxtjs项目中的浏览器图标步骤

处理步骤: 打开配置页面 使用el-upload 上传图片到后台 后台把图片转为ico,返回图标路径 配置页面修改本页面预览图,点击保存,修改的数据库。 通知nuxt布局页面,修改head节点中的图标属性,…

单链表算法库

singlelist.cpp #include "singlelist.h"/************************************************** ①函数名: CreatList_Head 功 能: 头插法建立单链表 参 数: (1)LinkList *&L: 传入的单链表指针地址(2)ElemType Array_used[]:要用来建表的数组(3)int Array_nu…

考研数学|高效刷透汤家凤《1800》经验分享

当然不需要换老师,如果你在基础阶段连汤老师的课都听不进去,那么换其他老师的话,很大可能也是白搭。 如果你现在对于1800还是一筹莫展的话,那么很明显,这反映出前期基础不扎实,没有真正理解和掌握这部分内…

WhatsApp被封如何解封?附账号防封技巧

相信各位小伙伴已经发现,WhatsApp新一轮风控已经启动,不少小伙伴已经受到封号潮的冲击。无论是老号还是新号都难以幸免。为了防止WhatsApp客户数据和聊天信息的丢失,针对封号的防封攻略请收藏! 一、WhatsApp被封的8个原因 1、被过…

解决PATH变量污染的问题

文章目录 解决PATH变量污染的问题概述笔记清空PATH变量之后的系统设置在命令行查看清空后的PATH变量以 gitea-1.17.1-gogit-windows-4.0-amd64.exe 为例以系统命令 where为例备注 - 批处理的后缀最好是batEND 解决PATH变量污染的问题 概述 随着不断安装新软件, 可能多个软件中…

Facebook账号防封方法及解禁方法

Facebook作为跨境主要业务平台,一直以来封号率都非常高。相信点进来的各位或多或少地遇见了个人号被封,广告账户被禁,FB主页被封等情况。针对此类问题,今天就小编也来分享自己的Facebook防封经验。 一、Facebook被封原因 主要有以…

Win10 搭建FTP存储服务器站点【超详细教程】

目录 第一步:打开控制面板>程序 第二步:win10左下角搜索IIS并打开 第三步:右键网站,选择添加FTP站点 第四步:添加FTP站点名称 第五步:添加IP地址和端口 第六步:身份验证与授权信息 第…

八大技术趋势案例(人工智能物联网)

科技巨变,未来已来,八大技术趋势引领数字化时代。信息技术的迅猛发展,深刻改变了我们的生活、工作和生产方式。人工智能、物联网、云计算、大数据、虚拟现实、增强现实、区块链、量子计算等新兴技术在各行各业得到广泛应用,为各个领域带来了新的活力和变革。 为了更好地了解…

SSH隧道详解与使用AutoSSH实现稳定的内网穿透

SSH隧道详解与使用AutoSSH实现稳定的内网穿透 一、前言 二. 本地转发 三、远程转发 四、 动态转发 五、AutoSSH 一、前言 SSH 是一种建立在应用层基础上的安全协议,利用SSH进行数据传输时也是较为可靠和安全的。当有明文数据传输时,为保障其安全&am…

抖音电商“达人客服”产品上线啦!超多作者邀你一起“321上客服”!

有问题别自己克服,来抖音电商找“达人客服” 当代年轻人购物,正在从机智省变成理智购。越来越多的人在达人直播间购物,看重的不止是优惠力度,还有服务保障。 为了帮助达人更好地服务用户,抖音电商上线了「达人客服」…

CSS实现小车旅行动画实现

小车旅行动画实现 效果展示 CSS 知识点 灵活使用 background 属性下的 repeating-linear-gradient 实现路面效果灵活运用 animation 属性与 transform 实现小车和其他元素的动画效果 动画场景分析 从效果图可以看出需要实现此动画的话,需要position属性控制元素…

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

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

手抖和震颤的区别是什么?一招教你辨别

“手抖”可依其迥异之特征及缘由予以归类。下述乃常见之手抖类型: 1.生理性手抖:通常是暂时的、轻微的,可能由于紧张、疲劳、寒冷、激动等因素引起。这种手抖一般在特定情况下出现,不代表身体有疾病。 2.病理性手抖&#xff1a…

实验02-1 C#和ASP.NET控件:在Web窗体中输出九九乘法表

【实验内容及要求】 1. 在Web窗体中输出九九乘法表 浏览效果如图2-1所示。 图2-1 在Default.aspx.cs中编写C#代码 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls;public par…

CC工具箱使用指南:【清理gdb里的空要素和表】

一、简介 有时候在处理标准库后,gdb数据库里可能会存在很多没处理的空要素和表。我们并不需要这些空要素和表,但是要一个一个查看并删除挺麻烦的,于是做了这个工具,一键清理掉。 二、工具参数介绍 点击【GDB相关】组里的【清理g…

Rust编程(四)PackageCrateModule

这一部分的中文教程/文档都很混乱,翻译也五花八门,所以我建议直接看英文官方文档,对于一些名词不要进行翻译,翻译只会让事情更混乱,本篇从实战和实际需求出发,讲解几个名称的关系。 Module & Crate & Package & Workspace 英文中的意思: Cargo:货物 Crate:…

深入解析Java代码混淆技术对应用程序安全的影响

摘要 本文探讨了代码混淆在保护Java代码安全性和知识产权方面的重要意义。通过混淆技术,可以有效防止代码被反编译、逆向工程或恶意篡改,提高代码的安全性。常见的Java代码混淆工具如IPAGuard、Allatori、DashO、Zelix KlassMaster和yGuard等&#xff0…

FPGA 图像边缘检测(Canny算子)

1 顶层代码 timescale 1ns / 1ps //边缘检测二阶微分算子:canny算子module image_canny_edge_detect (input clk,input reset, //复位高电平有效input [10:0] img_width,input [ 9:0] img_height,input [ 7:0] low_threshold,input [ 7:0] high_threshold,input va…