pyqtweb -用Python写漂亮的桌面应用

257 阅读2分钟

pyqtweb

pyqtweb 是基于PyQt5的web引擎封装的webview组件,它可以让您使用您喜欢的前端语言开发漂亮的桌面应用。python绑定的方法在js中能使用Promise方式调用,js绑定的事件在python中也能触发。在win7系统中也能稳定运行(本人只测试了win7、win10、win11 以上版本,其他系统及版本未测试)。
pyqtweb 项目地址

功能截图

img.png

使用方式

使用前请先安装PyQt5和PyQtWebEngine

 pip install -r requirements.txt

示例

import sys
from PyQt5.QtWidgets import QApplication
from pyqtweb import Options, BrowserWindow

if __name__ == '__main__':
    opt = Options()
    opt.title = "示例"
    opt.width = 800
    opt.height = 600
    opt.url = "http://localhost:5173/"
    app = QApplication(sys.argv)
    win = BrowserWindow(opt)
    win.show()
    sys.exit(app.exec_())

创建窗口选项 (Options)

  • title:窗口标题
  • width:窗口宽度
  • height:窗口高度
  • frameless:无边框窗口
  • bind:自定义暴露给前端的对象,前端可调用该对象的所有方法,且方法名,入参和定义相同
  • url:前端url地址 若编译后请传入具体的 index.html路径
  • debug:是否启用debug调试窗口
  • inspector_port:调试端口 默认12580
  • drag_selector :可拖动class名称 默认 .pyqtweb-drag
  • icon :程序图标路径
  • tray:系统托盘

创建托盘 (TrayOptions)

  • icon:托盘图标
  • actions:托盘菜单 TrayActionOptions
  • trigger_func:点击托盘菜单回调
  • tooltip:提示
  • style:托盘样式 可自定义qss

托盘菜单 (TrayActionOptions)

  • key:点击时回调的值
  • text:显示的文本
  • icon:图标
  • enable:是否可点击
  • sub_actions:子菜单(TrayActionOptions) 只能两级
  • TrayActionOptions.separator() 菜单分割线

Api

js和python方法api名称相同,只是python在调用是需要 BrowserWindow 对象的 window_event_bind 属性

windows

  • 设置标题:WindowSetTitle(title)
  • 全屏:WindowFullscreen(true)
  • 取消全屏: WindowFullscreen(false)
  • 是否全屏:WindowIsFullscreen()
  • 窗口居中:WindowCenter()
  • 显示窗口:WindowShow(true)
  • 隐藏窗口:WindowShow(false)
  • 设置窗口大小:WindowSetSize(width, height)
  • 获取窗口大小:WindowGetSize()
  • 窗口置顶:WindowSetStayOnTop(true)
  • 窗口取消置顶:WindowSetStayOnTop(false)
  • 窗口最大化:WindowMaximized()
  • 窗口最小化:WindowMinimized()
  • 恢复窗口:WindowRestore()
  • 窗口是否最大化:WindowIsMaximized()
  • 窗口是否最小化:WindowIsMinimized()
  • 窗口关闭:WindowClose()
  • 设置窗口透明度:WindowSetOpacity(level)
  • 窗口抖动:WindowShake()
  • 系统弹框:WindowMessageBox(type, title, text, yesText, cancelText)
  • 可拖动区域: 默认 pyqtweb-drag 将这个class添加到可拖动组件上

文件对话框

  • 打开目录: OpenDirectoryDialog(title, dirName)
  • 打开文件所在位置: OpenFileDialog(title, dirName)
  • 打开多文件: OpenMultipleFilesDialog(title, dirName, filters) filters 是文件过滤多个用分号隔开 例如: .txt;.py;*.png
  • 保存文件: SaveFileDialog(title, dirName, filters)

剪贴板

  • 设置剪贴板: ClipboardSetText(text)
  • 读取剪贴板: ClipboardGetText()

系统托盘

  • 图标闪烁: TrayStartFlash()
  • 图标停止闪烁: TrayStopFlash()