使用python+vue开发的桌面工具集pyweb-dev-tools

pyweb-dev-tools

项目简介

pyweb-dev-tools是使用pyqt+vue开发的实用工具脚手架,利用业余时间把工作中遇到的一些问题总结起来,打包进小工具集中,供大家在程序开发过程中参考和使用,同时支持二次开发,只要会python+web基础,就能进行自定义的工具集开发,开发好的工具集可以提交到工具集仓库,然后发布分享给其他用户,不断扩展转达工具集功能。

每一个工具集可以用web开发开发界面实现一些功能,在web开发不满足条件情况下,比如需要获取设备能力时,可以使用python定义后端接口函数,插件按命名空间封装了web端和python端的通信,js很方便进行调用python函数

项目地址

添加链接描述

项目示例图

在这里插入图片描述

支持平台

支持window,mac平台

环境安装

1 安装python环境 3.7版本或以上
2 安装nodejs环境 10.8版本或以上

开始开发

本项目为插件开发脚手架,已上传到pypi仓库 无需手工安装

以下为基于该脚手架的插件二次开发步骤

1 新建一个插件工程

工程以获取系统cpu序列号和mac地址为例,以下均以该工程做示例,实际可自定义

工程名 plugin_sys_info

2 根目录初始化前端项目

以vue为例,初始化vue项目 vue init webpack vuedev

调整打包配置项 vuedev/config/index.js 修改如下代码便于打包

build:{
    index: path.resolve(__dirname, '../dist/index.html'), //改为../dist/index.html
    // Paths
    assetsRoot: path.resolve(__dirname, '../dist'), //改为../
    assetsSubDirectory: 'static',
    assetsPublicPath: './', //改为./
//other
}

建议使用iview管理端框架统一样式

安装 qt-channel 用于javascript调用后端python接口 ,如果无需调用python后台可不添加

npm qt-channel vue -S
3 创建插件配置文件

根目录新建一个 config.ini 配置文件,添加如下配置:

[base]
;前端项目IP地址
webpack_server_ip = localhost 
;前端项目端口
webpack_server_port = 8080
;前端项目根目录
webpack_root_path = /vuedev
;前端项目插件目录
webpack_plugin_path = /src/plugin
4 安装python依赖

新建依赖配置文件 requirements.txt,添加如下内容 :

PyQt5==5.13.2
PyQtWebEngine==5.13.2
requests==2.22.0
PyInstaller==3.5
numpy==1.16.4
pywin32==224
wmi==1.4.9
pyweb-dev-tools==0.0.2

pyweb-dev-tools==0.0.2 为插件脚手架版本,后边会不定期更新 可在pypi搜索

根目录执行依赖安装命令:

pip install pipreqs && pip install -r requirements.txt
5 创建python启动脚本

根目录新建一个 app.py 配置文件,添加如下配置:

# -*- coding: utf-8 -*-
from pyWebDevTool.main import App

if __name__ == "__main__":    
    App()

至此 脚手架已经搭建完毕,运行该脚本,程序启动如下

在这里插入图片描述

6 插件模块开发

在脚手架基础上,可以进行插件工具的开发

6.1 插件属性定义

vuedev/src/plugin目录下 新建python包(注意是python包不是目录,需要包含________init________.py), 建议安装公司名+项目名结构命名

例如 vuedev/src/plugin/com/github/luanhy/sysinfo

新建一个插件属性定义文件 package-info.js

export default {
  "groupId": "com.github.luanhy",//公司名
  "artifactId": "sysinfo",//项目名
  "version": "1.0.0",//版本号
  "router": "router.py",//后端入口文件
  "indexPath": "/",//前端入口路径
  "name": "系统信息获取工具",//项目名称
  "description": "包含mac地址获取和cpu信息获取",//项目描述
  "class": "系统工具" //项目分类
}
6.2 插件后台开发

如果需要调用后台

vuedev/src/plugin/com/github/luanhy/sysinfo目录添加后台路由router.py文件,示例为定义获取mac地址和cpu序列号的函数接口

# -*- coding: utf-8 -*-
from pyWebDevTool.router.routeContext import rc

import wmi

from pyWebDevTool.util.loggerFactory import Logger

logger = Logger()

__sys_info = {
  "cpuCode": None,
  "mac": None
}


@rc.route("/get_mac")
def get_mac(params):
  """获取本机mac地址"""
  return getMac()


@rc.route("/get_cpu_info")
def get_cpu_info(params):
  """获取设备CPU序列号"""
  return getCpuCode()


def __getCpuCode():
  """获取cpu序列号多个竖线分隔"""
  cpuId = ""
  for processor in wmi.WMI().Win32_Processor():
    cpuId += processor.ProcessorId.strip() + "|"
  return cpuId[0: len(cpuId) - 1]


def getCpuCode():
  cpuCode = __sys_info['cpuCode']
  if cpuCode is None:
    cpuCode = __getCpuCode()
    logger.info("获取到的cpu序列号为:%s" % cpuCode)
    __sys_info['cpuCode'] = cpuCode
  return cpuCode


def getMac():
  mac = __sys_info['mac']
  if mac is None:
    mac = __getMac()
    logger.info("获取到的mac地址为:%s" % mac)
    __sys_info['mac'] = mac
  return mac


def __getMac():
  """获取mac地址多个竖线分隔"""
  macs = ""
  for mac in wmi.WMI().Win32_NetworkAdapter():
    if mac.MACAddress is not None:
      macs += mac.MACAddress + "|"
  return macs[0: len(macs) - 1]

6.3 插件前端开发

vuedev/src/plugin/com/github/luanhy/sysinfo/web/目录 创建vue页面文件index.vue

<template>
  <div style="padding: 20px">
    <div>
      <button @click="getMac" :disabled="disabled">获取MAC地址</button>
      你的MAC地址是:<br>
      <input v-model="msg" style="width: 100%;"/>
    </div>
    <div>
      <button @click="getCpuInfo" :disabled="disabled">获取CPU序列号</button>
      你的PC CPU序列号是:<br>
      <input v-model="cpuMsg" style="width: 100%;"/>
    </div>
  </div>
</template>

<script>

  import {QtRequest} from 'qt-channel'
  import packageInfo from "../package-info"

  export default {
    name: "sysInfo",
    data() {
      return {
        msg: '',
        cpuMsg: "",
        disabled: false
      }
    },
    mounted() {
      console.log(packageInfo)
    },
    methods: {
      async getMac() {
        this.disabled = true
        this.msg = await QtRequest({
          path: "/get_mac",//此处和后台router.py的router路径相对应
          packageInfo,
        })
        this.disabled = false
      },
      async getCpuInfo() {
        this.disabled = true
        this.cpuMsg = await QtRequest({
          path: "/get_cpu_info",//此处和后台router.py的router路径相对应
          packageInfo,
        })
        this.disabled = false

      },
    }
  }
</script>

<style scoped>

</style>

配置页面路由 vuedev/src/router/index.js

import Vue from 'vue'
import Router from 'vue-router'

Vue.use(Router)

export default new Router({
  routes: [
     {path: '/', redirect: '/index'},
    {
      path: '/index',
      name: 'index',
      component: () => import('../plugin/com/github/luanhy/sysinfo/web/index'),
    },
  ]
})
6.4 插件结构

完成后插件包整体目录示例如下:
在这里插入图片描述

7 开发模式启动脚手架运行示例程序

至此,一个简单点的获取mac地址和cpu序列号的插件就完成了。

启动 app.py 时增加参数 -p=dev

表示开发环境 程序将一并启动前端dev环境,启动速度稍慢,显示调试页面

启动中如图:

在这里插入图片描述
启动完毕显示插件调式页面:

在这里插入图片描述

点击获取mac地址按钮和获取CPU序列号可以调用后端接口获取到信息

在这里插入图片描述

8 插件打包

点击 开始-构建插件 开始插件打包

片刻后弹出构建成功对话框

在这里插入图片描述
点击打开插件目录可以找到构建好的插件文件

在这里插入图片描述

9 插件安装

上一步的插件打包后可以分享给其他用户安装,

点击 开始-安装插件,选择上传插件包, 选择上一步的插件包文件

在这里插入图片描述
片刻后显示插件安装完成

在这里插入图片描述
点击重新加载 点击 我的插件-系统工具-系统信息获取工具菜单即可预览插件效果。

10 正常模式启动脚手架运行示例程序

启动参数 -p=dev 去除后运行app.py即可 ,程序加载快,不启动前端环境,只显示已安装的插件。

11 传送门

脚手架: https://gitee.com/luanhaoyu_admin/py-web-dev-tools

示例项目:https://gitee.com/luanhaoyu_admin/plugin_sys_info

已集成工具

后续将补充一个插件仓库站,提供平台供插件开发者分享插件

  1. pc设备 mac地址获取 cpu序列号获取

待集成工具

  1. windows注册表管理
  2. windows开机启动项管理

联系作者

QQ:250985725

邮箱: 15951963820@163.com

博客地址:https://blog.youkuaiyun.com/v2sking

### Vue3 和 Vite 中集成 Node-Sass 的配置教程 在现代前端开发环境中,Vue3 结合 Vite 构建工具可以显著提升项目的性能和开发体验。然而,在这种组合中引入 `node-sass` 需要一些额外的配置步骤来确保其正常工作。 #### 安装依赖项 为了支持 `.scss` 文件解析,首先需要安装必要的依赖包: ```bash npm install sass-loader node-sass --save-dev ``` 上述命令会安装两个核心库:`sass-loader` 负责处理 SCSS/SASS 文件的加载逻辑[^1];而 `node-sass` 则作为编译器负责将 SASS/SCSS 编译成 CSS[^2]。 需要注意的是,随着 Webpack 5 及更高版本逐渐淘汰对 `node-sass` 的官方支持,推荐考虑使用 Dart Sass 替代方案(即直接通过 `sass` 包实现相同功能)。如果决定采用此方法,则应执行如下替代指令: ```bash npm uninstall node-sass sass-loader npm install sass --save-dev ``` 这里移除了旧版组件并替换成更现代化的选择——Dart Sass[^3]。 #### 修改 Vite 配置文件 完成以上操作之后,还需要调整 Vite 的配置以适配新的需求。打开或者创建名为 `vite.config.js` 或者 `vite.config.ts` 的配置脚本,并加入以下内容片段: ```javascript import { defineConfig } from &#39;vite&#39;; import vue from &#39;@vitejs/plugin-vue&#39;; export default defineConfig({ plugins: [ vue() ], css: { preprocessorOptions: { scss: { additionalData: `@import "@/styles/_variables.scss";`, // 自定义全局变量导入路径示例 } } } }); ``` 在此段代码里设置了针对 SCSS 的预处理器选项,允许开发者指定某些共享样式资源如颜色主题或断点尺寸等统一管理位置[^4]。 另外值得注意的一点是,当运行环境处于 Windows 平台下时可能会遇到兼容性问题,这是因为 Node.js 默认使用的 libuv 库可能无法完全满足 GYP 工具链的需求所致。因此建议提前确认已正确设置 Python 版本以及 Visual Studio Build Tools 环境变量等相关条件后再尝试重新构建项目结构[^5]。 最后一步就是验证整个流程是否成功生效了。可以在任意组件内部测试一下简单的 SCSS 使用情况: ```html <template> <div class="example">Example</div> </template> <script lang="ts"> // Component logic here... </script> <style scoped lang="scss"> .example { font-size: $default-font-size; /* 假设已在 global variable file defined */ } </style> ``` 至此为止应该已经顺利实现了基于 Vue3 和 Vite 技术栈下的 Node-Sass 整合目标!
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值