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

vscode搭建PyQt + Quick开发环境

icon

VScode搭建PyQt + Quick开发环境


目录

  • 环境准备 🔔
  • 安装必要的Python包 🔔
    • 🔎 PyQt5和PySide2的区别
    • 💾 安装PyQt5
    • 💾 安装PySide2
  • 配置VScode 🔔
    • 💻 安装扩展
  • 代码示例 🔔
    • ✔ Python调用Qt库的示例
    • ✔ 编写Quick 界面
    • ✔ 程序界面
  • 发布 🔔
  • 支持 🔔


环境准备 🔔

  • 🔥 安装Python
  • 🔥 安装Visual Studio Code

安装必要的Python包 🔔

PyQt有两种库PyQt5PySide2

🔎 PyQt5和PySide2的区别

PyQt5PySide2都提供了Python对Qt库的绑定,选择PyQt5还是PySide2,主要取决于你的项目需求和许可要求。如果需要在闭源项目中使用,且不想购买商业许可证,PySide2可能是更好的选择。如果你希望获得更丰富的社区资源和教程,PyQt5则是不错的选择。

  1. 授权和许可 📄

    • PyQt5:采用GPL(GNU General Public License)或商业许可证。如果你的项目是闭源的,你需要购买商业许可证。
    • PySide2:由Qt公司(现已被The Qt Company维护)开发,采用LGPL(Lesser General Public License)或商业许可证。LGPL允许在闭源项目中使用,前提是遵守动态链接和库的修改发布要求。

  2. 开发者和支持 📄

    • PyQt5:由Riverbank Computing开发和维护,有长期的社区支持。
    • PySide2:由Qt公司开发和维护,随着Qt框架的更新得到官方支持。

  3. 命名空间和模块 📄

    • PyQt5:在导入模块时使用from PyQt5 import …
    • PySide2:在导入模块时使用from PySide2 import …,尽管接口和PyQt5非常相似,但有时需要注意命名空间的差异。

💾 安装PyQt5

需要使用pip安装PyQt5PyQt5-tool两个包

  • 📄 安装PyQt5

    pip install pyqt5
    

    如果下载异常或者下载过久,可以使用镜像安装:

    pip install -i https://mirrors.aliyun.com/pypi/simple/ PyQt5
    
  • 📄 安装PyQt5-tool

    pip install pyqt5-tool
    

    如果下载异常或者下载过久,可以使用镜像安装:

    pip install -i https://mirrors.aliyun.com/pypi/simple/ PyQt5-tool
    

💾 安装PySide2

pip install PySide2

如果下载异常或者下载过久,可以使用镜像安装:

pip install -i https://mirrors.aliyun.com/pypi/simple/ PySide2


配置VScode 🔔

💻 安装扩展

📄扩展📜作用
在vscode中使用Python开发必须下载的扩展:
  • 语法高亮
  • 代码补全
  • 格式化
  • 代码导航
  • 其他
允许你使用VSCode的调试功能来调试Python应用程序。
使用QWidget库进行开发的可安装,可以调用QtDesigner拖拽控件

代码示例 🔔

✔ Python调用Qt库的示例

main.py中编写python示例:

# main.py
from PyQt5.QtCore import QObject, pyqtSignal, pyqtSlot, QTimer, QDateTime
from PyQt5.QtGui import QGuiApplication
from PyQt5.QtQml import QQmlApplicationEngine, qmlRegisterTypeclass Backend(QObject):mySignal = pyqtSignal(str)def __init__(self, parent=None):QObject.__init__(self)self.timer = QTimer(self)self.timer.timeout.connect(lambda: self.mySignal.emit(QDateTime.currentDateTime().toString("yyyy-MM-dd hh:mm:ss")))self.timer.start(1000)@pyqtSlot(str)def onButtonClicked(self, text):print(text)if __name__ == "__main__":app = QGuiApplication([])engine = QQmlApplicationEngine()qmlRegisterType(Backend, "Backend", 1, 0, "Backend")engine.load("main.qml")app.exec_()

✔ 编写Quick 界面

import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.3
import QtQuick.Window 2.2
import Backend 1.0Window {title: qsTr("Hulu PyQml Example")visible: truewidth: 300height: 100property Backend backend: Backend {}ColumnLayout {spacing: 10anchors.fill: parent        Text {Layout.alignment: Qt.AlignHCenterLayout.preferredWidth: 100Layout.preferredHeight: 30id: text}Button {id: buttonLayout.preferredWidth: 100Layout.preferredHeight: 30Layout.alignment: Qt.AlignHCentertext: "Click me"onClicked: {backend.onButtonClicked(button.text)}}}Connections {target: backendfunction onMySignal(str) {text.text = str}}
}

✔ 程序界面

在这里插入图片描述

示例工程源码下载:https://download.csdn.net/download/qq_41898196/89557468


发布 🔔

关于编译好程序之后进行打包发布,可以参考该文章《通过PyInstaller把Python文件打包成应用程序》


支持 🔔

如果你觉得这个文章有帮助,请给它一个 👍 和 ⭐!

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 阿里云服务器 篇五:短链服务网站
  • 使用NIFI连接瀚高数据库_并从RestFul的HTTP接口中获取数据局_同步到瀚高数据库中---大数据之Nifi工作笔记0067
  • Vue的自定义事件:组件间通讯的艺术
  • GitHub 令牌泄漏, Python 核心资源库面临潜在攻击
  • Linux云计算 |【第一阶段】ENGINEER-DAY2
  • 敏捷开发适用于哪些项目?你用对了吗?
  • 《Exploring Aligned Complementary Image Pair for Blind Motion Deblurring》
  • 导航专业入门,高考/考研假期预习指南
  • MKS流量计软件MFC通讯驱动使用于C和P系列MFC控制USB接口W10系统
  • docker compose 部署交互模式的容器-以Ubuntu为例
  • Shell 构建flutter + Android 生成Apk
  • A Survey on Multimodal Large Language Models综述
  • 简单记录一下ubantu18.04初步使用opencv所遇到的问题
  • EasyExcel 学习之 导出 “WPS 表格在试图打开文件时遇到错误”
  • NVIDIA 完全过渡到开源 GPU 内核模块
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • 03Go 类型总结
  • Effective Java 笔记(一)
  • Electron入门介绍
  • Gradle 5.0 正式版发布
  • Python爬虫--- 1.3 BS4库的解析器
  • Webpack 4x 之路 ( 四 )
  • 蓝海存储开关机注意事项总结
  • 如何正确配置 Ubuntu 14.04 服务器?
  • 项目实战-Api的解决方案
  • 一道面试题引发的“血案”
  • 异步
  • 优化 Vue 项目编译文件大小
  • JavaScript 新语法详解:Class 的私有属性与私有方法 ...
  • # windows 运行框输入mrt提示错误:Windows 找不到文件‘mrt‘。请确定文件名是否正确后,再试一次
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • #Z0458. 树的中心2
  • $NOIp2018$劝退记
  • (附源码)ssm旅游企业财务管理系统 毕业设计 102100
  • (函数)颠倒字符串顺序(C语言)
  • (十) 初识 Docker file
  • (十三)MipMap
  • (四)JPA - JQPL 实现增删改查
  • (转)3D模板阴影原理
  • (转)chrome浏览器收藏夹(书签)的导出与导入
  • .NET 6 在已知拓扑路径的情况下使用 Dijkstra,A*算法搜索最短路径
  • .NET C# 操作Neo4j图数据库
  • .NET/C# 如何获取当前进程的 CPU 和内存占用?如何获取全局 CPU 和内存占用?
  • .Net高阶异常处理第二篇~~ dump进阶之MiniDumpWriter
  • @DateTimeFormat 和 @JsonFormat 注解详解
  • @GlobalLock注解作用与原理解析
  • @ModelAttribute 注解
  • @selector(..)警告提示
  • [ vulhub漏洞复现篇 ] JBOSS AS 4.x以下反序列化远程代码执行漏洞CVE-2017-7504
  • [ 英语 ] 马斯克抱水槽“入主”推特总部中那句 Let that sink in 到底是什么梗?
  • [AIGC] SpringBoot的自动配置解析
  • [bzoj1324]Exca王者之剑_最小割
  • [C++] 如何使用Visual Studio 2022 + QT6创建桌面应用
  • [Codeforces] number theory (R1600) Part.11
  • [IE编程] 如何获得IE版本号