From ed211c63cd2406f39a9381adc875777efcbc52e1 Mon Sep 17 00:00:00 2001 From: qq_39764505 Date: Tue, 18 Aug 2026 08:45:46 +0800 Subject: [PATCH] Add Windows GUI and Nuitka packaging support --- ...thon-office-windows-gui-website-article.md | 160 ++ gui/README.md | 72 + gui/__init__.py | 13 + gui/__main__.py | 9 + gui/app.py | 37 + gui/assets/python-office-icon-source.jpg | Bin 0 -> 623257 bytes gui/assets/python-office-icon-source.png | Bin 0 -> 111614 bytes gui/assets/python-office-icon.png | Bin 0 -> 111614 bytes gui/assets/python-office.ico | Bin 0 -> 57017 bytes gui/main_window.py | 674 +++++++ gui/panels.py | 342 ++++ gui/registry.py | 1659 +++++++++++++++++ gui/run.py | 154 ++ gui/styles.py | 466 +++++ gui/tests/__init__.py | 0 gui/tests/test_smoke.py | 93 + gui/widgets/__init__.py | 12 + gui/widgets/param_form.py | 392 ++++ gui/workers.py | 89 + office/__init__.py | 77 +- office/api/email.py | 180 +- office/api/excel.py | 344 ++-- office/api/file.py | 391 ++-- office/api/finance.py | 72 +- office/api/image.py | 382 ++-- office/api/markdown.py | 206 +- office/api/ocr.py | 97 +- office/api/pdf.py | 635 ++++--- office/api/ppt.py | 140 +- office/api/tools.py | 330 ++-- office/api/video.py | 205 +- office/api/web.py | 20 +- office/api/wechat.py | 234 ++- office/api/word.py | 233 ++- office/compatibility.py | 100 +- office/lib/decorator_utils/__init__.py | 7 + office/lib/decorator_utils/deprecated.py | 69 + office/lib/decorator_utils/instruction_url.py | 5 +- office/lib/excel/SplitExcel.py | 39 +- office/lib/image/eliminate_background.py | 11 +- office/lib/pdf/add_watermark_service.py | 65 +- scripts/build-gui-nuitka.ps1 | 397 ++++ setup.cfg | 14 + 43 files changed, 6993 insertions(+), 1432 deletions(-) create mode 100644 docs/python-office-windows-gui-website-article.md create mode 100644 gui/README.md create mode 100644 gui/__init__.py create mode 100644 gui/__main__.py create mode 100644 gui/app.py create mode 100644 gui/assets/python-office-icon-source.jpg create mode 100644 gui/assets/python-office-icon-source.png create mode 100644 gui/assets/python-office-icon.png create mode 100644 gui/assets/python-office.ico create mode 100644 gui/main_window.py create mode 100644 gui/panels.py create mode 100644 gui/registry.py create mode 100644 gui/run.py create mode 100644 gui/styles.py create mode 100644 gui/tests/__init__.py create mode 100644 gui/tests/test_smoke.py create mode 100644 gui/widgets/__init__.py create mode 100644 gui/widgets/param_form.py create mode 100644 gui/workers.py create mode 100644 office/lib/decorator_utils/deprecated.py create mode 100644 scripts/build-gui-nuitka.ps1 diff --git a/docs/python-office-windows-gui-website-article.md b/docs/python-office-windows-gui-website-article.md new file mode 100644 index 00000000..75265f4e --- /dev/null +++ b/docs/python-office-windows-gui-website-article.md @@ -0,0 +1,160 @@ +# python-office Windows 图形界面版:让办公自动化更容易上手 + +## 写在前面 + +python-office 原本是一个非常实用的 Python 办公自动化项目,可以帮助用户处理 Word、Excel、PDF、文件批量操作等常见办公任务。对于熟悉 Python 或命令行的用户来说,直接通过 CLI 使用这些功能没有太大问题。 + +但在实际办公场景中,很多用户并不是程序员。他们可能只是想把 PDF 转成 Word,或者把几个 PDF 文件合并成一个文档。如果还需要先安装 Python、配置依赖、打开命令行、输入参数,对普通用户来说就有些复杂了。 + +所以我基于 python-office 做了一个 Windows 图形界面版本,并使用 Nuitka 打包成可离线运行的软件包。它的目标很明确:让不熟悉命令行的用户,也能像使用普通 Windows 软件一样使用 python-office 的常用功能。 + +## 为什么要做图形界面版 + +很多优秀的 Python 工具功能很强,但传播到普通用户那里时,常常会遇到一个问题:不是功能不好,而是使用门槛太高。 + +对于开发者来说,命令行很高效;但对普通办公用户来说,命令行意味着: + +- 不知道从哪里打开 +- 不知道命令怎么写 +- 不知道参数填在哪里 +- 路径中有空格或中文时容易出错 +- 出错后不知道应该怎么排查 + +图形界面版就是为了解决这些问题。它把常用功能整理成可点击、可填写、可查看日志的界面,让用户可以通过选择文件、填写参数、点击运行来完成操作。 + +## 同事试用后的真实反馈 + +这个版本给同事试用后,反馈比较明显:最受欢迎的是 **PDF 转 Word** 和 **PDF 合并**。 + +这也很符合日常办公需求。很多人并不需要复杂的自动化流程,只是经常遇到这些具体问题: + +- 收到 PDF 文件后,需要转成 Word 再编辑 +- 多个 PDF 材料需要合并成一个完整文件 +- 不想为了一个简单操作去下载各种小工具 +- 不方便安装 Python 或配置环境 +- 希望一个软件打开后就能直接处理文件 + +图形界面版把这些高频需求放到了更容易使用的位置,让普通用户也能快速完成操作。 + +## 主要功能亮点 + +### 1. PDF 转 Word 更方便 + +PDF 转 Word 是试用反馈中最受欢迎的功能之一。 + +过去如果通过命令行操作,用户需要知道具体命令、输入文件路径和输出路径。现在通过图形界面,可以直接选择 PDF 文件,填写或选择输出位置,然后点击运行。 + +这种方式更符合普通办公用户的习惯,也更适合临时处理文件。 + +### 2. PDF 合并更直观 + +PDF 合并也是非常常见的办公需求。比如把多个通知、合同、证明、扫描件合并成一个 PDF,方便发送、归档或打印。 + +图形界面版让用户不用写命令,只需要选择需要合并的文件,再执行合并操作即可。对于不熟悉命令行的人来说,这类改动能明显降低使用成本。 + +### 3. 解压即可运行 + +这个版本使用 Nuitka 目录模式打包,将运行所需依赖放在同一个文件夹中。 + +用户下载后只需要: + +1. 解压软件包 +2. 进入 `run.dist` 文件夹 +3. 双击 `python-office-gui.exe` + +不需要提前安装 Python,不需要手动安装依赖,也不需要联网配置环境。 + +### 4. 适合离线环境 + +很多办公场景并不一定能随时联网,比如内网电脑、教学机房、临时演示电脑,或者单位中不方便随意安装依赖的设备。 + +离线打包版本更适合这种环境。只要把完整文件夹复制过去,就可以运行软件。 + +### 5. 功能分类更清楚 + +新版界面把功能按类别整理到左侧栏中,用户可以按模块查找自己需要的工具。 + +相比在文档里寻找命令,图形界面的分类方式更直观。用户可以先看到有哪些功能,再决定使用哪一个。 + +### 6. 保留运行日志 + +软件界面中保留了运行日志区域。执行功能时,用户可以看到当前操作过程、成功提示或错误信息。 + +这对普通用户和开发者都很有帮助。如果运行失败,用户可以把日志截图发给维护者,排查问题会更方便。 + +### 7. 更统一的软件体验 + +为了让这个版本更像一个完整的软件产品,我也重新设计了界面配色、布局和 exe 图标。 + +新的界面更加清爽,功能区域更明确,整体风格也更统一。对于普通用户来说,视觉上的完整度会影响第一印象,也会影响他们是否愿意继续使用。 + +## 适合哪些人使用 + +这个图形界面版适合以下用户: + +- 不熟悉命令行,但想使用 python-office 的用户 +- 经常需要 PDF 转 Word 的办公用户 +- 经常需要合并多个 PDF 的用户 +- 想把办公自动化工具分享给同事或学生的人 +- 需要在离线环境下运行办公工具的人 +- 希望快速体验 python-office 功能的新手用户 + +它并不是要替代原来的 CLI,而是作为补充,让 python-office 可以覆盖更多使用场景。 + +CLI 适合开发者、批处理脚本和自动化集成;GUI 更适合普通用户、教学演示和低门槛分发。两种方式可以同时存在。 + +## 下载和使用 + +发布地址: + + + +由于软件包较大,目前采用分卷方式上传。使用步骤如下: + +1. 下载所有分卷文件: + - `python-office-gui-windows-x64-2026.08.17.zip.part001` + - `python-office-gui-windows-x64-2026.08.17.zip.part002` + - `python-office-gui-windows-x64-2026.08.17.zip.part003` + - `python-office-gui-windows-x64-2026.08.17.zip.part004` + - `python-office-gui-windows-x64-2026.08.17.zip.part005` +2. 下载 `merge-parts.bat` +3. 把 5 个分卷和 `merge-parts.bat` 放在同一个文件夹 +4. 双击 `merge-parts.bat`,合并出完整 zip +5. 解压 zip +6. 进入 `run.dist` 文件夹 +7. 双击 `python-office-gui.exe` + +合并后的 zip 校验值: + +```text +SHA256: 22C39F818220B38F31C116CE072F844C9B84001F8F58A56B35D8EB30934A2C4E +``` + +## 这个版本的意义 + +我认为这个版本最大的意义,是把 python-office 的能力从“开发者可用”进一步推向“普通用户可用”。 + +很多办公自动化功能本身并不复杂,但如果只能通过命令行使用,就会挡住一部分真正需要它的人。图形界面版可以让这些功能更容易被看到、被理解、被使用。 + +尤其是 PDF 转 Word、PDF 合并这类高频办公需求,本身就非常适合做成图形界面工具。用户不需要关心背后的命令,只需要完成自己的办公任务。 + +## 后续计划 + +后续如果继续完善,可以考虑: + +- 继续优化 PDF 相关功能体验 +- 增加更多常用办公功能入口 +- 优化大文件处理时的提示和进度显示 +- 继续压缩打包体积 +- 整理代码结构,方便提交到原项目 +- 根据用户反馈调整界面和操作流程 + +## 总结 + +python-office Windows 图形界面版,是一次面向普通办公用户的尝试。 + +它保留了 python-office 的实用能力,同时通过图形界面、离线打包、使用教程和统一的软件设计,降低了使用门槛。 + +从同事试用反馈来看,PDF 转 Word 和 PDF 合并这类功能非常适合通过图形界面来推广。它们需求明确、使用频率高、普通用户容易理解,也更容易体现办公自动化工具的实际价值。 + +希望这个版本可以让更多人体验到 python-office 的便利,也让办公自动化工具离普通用户更近一点。 diff --git a/gui/README.md b/gui/README.md new file mode 100644 index 00000000..84667fa9 --- /dev/null +++ b/gui/README.md @@ -0,0 +1,72 @@ +# python-office Windows GUI + +这是一个面向普通办公用户的 `python-office` 图形界面入口,基于 PySide6 构建。 + +它保留 CLI 的自动化能力,同时把常用功能整理成可点击、可填写、可查看日志的桌面窗口。对不熟悉命令行的用户来说,可以直接选择文件、填写参数并点击运行。 + +## 主要特点 + +- 左侧按模块展示功能,右侧按需生成参数表单 +- 启动时默认折叠左侧分类,减少界面干扰 +- 参数通过 `inspect.signature` 反射生成,并在打开功能页时懒加载 +- 使用 `QThread` 执行业务函数,避免界面卡死 +- 运行日志集中显示,方便截图和排错 +- 对必须 CLI 交互的功能显示命令提示,不在 GUI 中直接执行 +- 附带 Nuitka 目录模式打包脚本,方便生成离线运行版本 + +## 安装依赖 + +```bash +pip install PySide6 +``` + +如需打包 Windows 离线版本,还需要安装 Nuitka: + +```bash +pip install nuitka +``` + +## 启动方式 + +在项目根目录运行: + +```bash +python -m gui +``` + +也可以使用: + +```bash +python -m gui.run +``` + +## 打包方式 + +Windows PowerShell 中运行: + +```powershell +.\scripts\build-gui-nuitka.ps1 +``` + +脚本会使用 Nuitka 目录模式生成 `dist-nuitka/run.dist`,并复制运行所需依赖,方便离线使用。 + +## 目录结构 + +```text +gui/ +├── __main__.py +├── app.py +├── run.py +├── main_window.py +├── panels.py +├── registry.py +├── styles.py +├── workers.py +├── assets/ +├── widgets/ +└── tests/ +``` + +## 当前重点场景 + +试用反馈中,PDF 转 Word 和 PDF 合并是最受欢迎的功能。GUI 版本重点降低这些高频办公能力的使用门槛,让用户不用记命令,也不用提前配置复杂环境。 diff --git a/gui/__init__.py b/gui/__init__.py new file mode 100644 index 00000000..f4a57e03 --- /dev/null +++ b/gui/__init__.py @@ -0,0 +1,13 @@ +# -*- coding: utf-8 -*- +"""python-office GUI 包。 + +启动方式(任选其一): + 1. ``python -m gui.run`` + 2. ``python -m gui`` + 3. 安装后 ``python-office-gui``(在 pyproject.toml 中声明) + +依赖: + pip install PySide6 +""" + +__version__ = "1.0.0" diff --git a/gui/__main__.py b/gui/__main__.py new file mode 100644 index 00000000..7f86c519 --- /dev/null +++ b/gui/__main__.py @@ -0,0 +1,9 @@ +# -*- coding: utf-8 -*- +"""允许 ``python -m gui`` 直接启动。""" + +import sys + +from gui.app import main + +if __name__ == "__main__": + sys.exit(main()) diff --git a/gui/app.py b/gui/app.py new file mode 100644 index 00000000..f541e433 --- /dev/null +++ b/gui/app.py @@ -0,0 +1,37 @@ +# -*- coding: utf-8 -*- +"""QApplication 工厂 + main window 装配。""" + +from __future__ import annotations + +import sys +from pathlib import Path +from typing import Optional + +from PySide6.QtGui import QFont, QIcon +from PySide6.QtWidgets import QApplication + +from gui.main_window import MainWindow +from gui.styles import apply_theme + + +def _app_icon_path() -> Path: + return Path(__file__).resolve().parent / "assets" / "python-office.ico" + + +def create_app(argv: Optional[list[str]] = None) -> QApplication: + app = QApplication.instance() or QApplication(argv or sys.argv) + app.setApplicationName("python-office") + app.setOrganizationName("python-office") + app.setFont(QFont("Segoe UI", 10)) + icon_path = _app_icon_path() + if icon_path.exists(): + app.setWindowIcon(QIcon(str(icon_path))) + apply_theme(app) + return app + + +def main() -> int: + app = create_app() + window = MainWindow() + window.show() + return app.exec() diff --git a/gui/assets/python-office-icon-source.jpg b/gui/assets/python-office-icon-source.jpg new file mode 100644 index 0000000000000000000000000000000000000000..95cb0422e5757946090e4d31b4a46725c2c0de8d GIT binary patch literal 623257 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 z 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
#xg-t>`hH%ypuGO!yMAZ%axur=7yxNB{w?ukyC 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%0AbXwKPDOJkU@| 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 kz% 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

HP~|{vm^k!ACUTa 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%0D#n|ahG@VNH|l^Wxf~-$`vY|5KQUF|KtUh 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�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 z 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 znt

r;Dc3#5#VHr+>n0&$x-^MI(g& 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

IX ze|_E5s)4rk`r<>Lb9Yw~Wk1V(2=8g{70#&K%e6VuxR>GD=4Vi(GDRTyvPF+hJuZ@l zq1+!=`KEi6?-h?NiRxXV(FM=X>`-T=1dq7lRq7FsdDQ2k+)v2C0PDlzS&V@RF7h#; zuS$cl#e&^Fr-y_-Z8ucDEO&)S{)UFAbMKw2t^K_eX`iCf_M#yv(_pZQH77B@hXn<{H(YN`#M1VVy$idxcTP9fMX{MOsFX{U{E< z7@GQeZK$XW(X5LAgI@X+VAeG=JbIy!k5Ry_iQ;+0rTV|UauhNv+mcWh_GWCebw@BA-t4IFH1pj-8%ZaPH7nF2Q9LY|-O0_s*L&q<>-~b^=w->DKVl;m zq2T!K7$N!{o67C*A6gdM%$+F^8~!w7_x|R~H;#{`625l6KUep&hLSnUe)Zp&kIcyv z(-JiX@(w5SpERsIEfLeEE^c9a9~ZM#uLY`4t2BJ0#VO(Xc^J`h`*C)&vljnc%Z^LTrcsfWAoXcj zQvqAe2mqzfQ_2O-_a+qzc}awIWtceIf;dcRoLmIGKFx27q+^S0Xbi4WM@3Fy%pI+MfiLm1N5kabtb zc%dCU_LNRFhe+qA0ixV%U(uR{6QQjA2KQB31{oP_*KTVbUSE9C+dE$> z9{4>&o+dMEfy)C)x9>GrR59nfJwaAq>=R0JRDh(0UnRe+dHlRr_N+Vez&xXNP0*Q4 zwsm9mw~y>CG(2uDeHM&)ZIE%Fr_G0!+J*xsaiS?MZ{z*!U$a09<8&&Na)`?ts-Fja z%RArP{W|0>qt+CG)%9Y|JMizX`sP{wraFpJ?!K1-O{k{UjIjRhcRkj?yjBxI6-v+V z1b|0ydhFGt0?+nV5>t&Xs&HZ7?A_IBlX@N-7U_&=I!`Pv9I7nGI>ojB&HKISkSxBa zl(zluE9}YN)+a^3#E^melhe3kH%r8h8^RL@9C}H<7s1sXKb>Wsz8CqU$kPAWa9o#S zCR~iLZhZO^OSBH=r^&GC&)#$Ge~XTSU4NQ>R(_(9Jy!gX^`xK`j=tyJ9&<9u{q|eC z`wHGUqZg85qFg3Kt$);y+kc6jQSQnJT6_}!nA@^4vNDrTQNRegizf4|f7D}6l?T4J zN5HM8@o5hE(oX)i6lSTB4-Gn6JH|$}Wj}6b{FWl@elkXg$~Hy>zy16if$@#F-D)=8 z@aSg1$JtE*j}+FadwQ%d&54R8F+&K`6{Q{-3?bg41_@p$+aXkZ+|^eI8!au?VTj$f z$~EHTwzUYnps-a0+t{2d6hZOG!j39sZOomS^}NZK{8%}mt+uW1gJZgNLLd>7=5^B^ zi6ZIy@Oq!_Kvfo`9&3XXNsS(ZP1s#EEn((?!A1egjJ zF6j5etuU$5kS9akLYKBmCDQGc5eDyq(*~ch36Rwqfc^q)$Mws)uK{i@${@5@8(0Ty zz2guFL1nbvr*YR5@B=C%l|J|6!l`X<{;Tc?$=}PJFZ|U(_%WiFDt_H&3mQ&p!TiEv z4%|Bq7T*PI=@cg`o2z1jM%!u0l>zYk$lrz=e{rlgQBl?X|``MsEa5 z^cGZ809^9Gf33x6CUjf?-PQ`IIaw2aRrf%WuQ{Vw>H(Z<>1|;JL3mopF2B$=g^NkD zJ)XQ=E7&?=%CUIh#DO#N@DJTP2vMiXn8aWtUS2S1SP|q1$%w)P03oti{vp zU8_=WN>JIOoEzcT3yy7+^|ecU+Qxl4SF9P2#y;#x{1kdouH|bcZ1|K6)1TUhdrNQm zoQkTh)s{q4r+*B{qEyd0-(#GE@7A)+Pr$DT(nq#OOO@i)uj7voNtvw3dU05=L*SHp(Cq6+^fed6aU$)mWAo__-hbSFLmyk&=dIwg?XVQP zlE9%%s__fw95~N&W#FPsc{=FU`I&t+LAtdGtgcvyB=qv5GkN@6lC*5@UT%c;z)$fA zw#ub55t+?iCQC{?PILxUQ7B^#iNKa0CuAYRfN9Ht-?#dm^*lFR{&xDVs%Lx&k_|&B zhW!d6vp3mVjo6UWP3;jFgu3@Zx{anyc_u%eyof0=2@;Gix3_zNU>dIcEPbj^7jF)($Os&jW-8(^)? zkN6YBS{6g!Msz0YXkPpOv}vObjQZhfEc~?*^v#%W+`JcB#&L(NwT|nH(lH)}^wLho%GtL63tZU|Iv3 zDL4|P-$o{shJYF_3Rv`Jfw-^V+bg*tWueYv=GplIpNI>6-7vN+;YpR_%t?50*vMhy zRuy6EPLP_H!KgQ{Y`*@qIJ56MEb3+fm!?$^2KjURIy5 zlhJx7^e3R!9w1SV_oPafMzemI=_JsIl+MhxNO~NN$+_i}rq} zP%Fj}LQ9JDY*f!&l@xnFqQUe@f5_|mqrJvPSR+m6HV^t-QR1Xd-QOrNy+cA|$jb@a zjIqQq{;EkCU921G%gni2fd{ZHsNiVGH|esNm9%}0tVfN|S<)EATT?UnjhwfpJWU{* z$eK}*@-P|2gt;deIhoiO=-Rn`T}`h=*s*SsO888E1HE|KE}=bC%Y1K_-FJKVFs9a? zfrhiUSch5l-iwctG>Q_I{+VvzdKW!k=2`(PaI2sBE`ecM3Q#lVuzy910YW=a+!%oB z)WtrxIxD>BCn1IP>{30Pa`W#fay_o&zqs5HJxP|X4B8%L^(%>FEWuRn?&2_mtt{Q0 zJeLeY0QE2}-i(RUhb1=tuVHbW_IKO)dX?>@@7`d}`@|{1+qtU>?L993L1ioCN0J6dGn>yeAPzb-tD`pTSk9$Ey7(nq}t5UD&5+#>pJvRRfgZ^ zRMNuE+d59<5*NPp&@y`^S&Q6|2Goy)+TEXBfSMn$D4)G@J)BIUfDDQ)m0@A5WKi6+ z<(b@>!|fK&K1&SMAl?A{2w9-pbAL)(gxvl(cP3RJqh+#Z*P3~5$Ozix7_+ZmwiL4? zC);KHbNp1Gi}*$EpAWvef8FQ>OLci)Zda&rAjtbto_mGVye5$xx}di%-e>0V6WXr| zUHV*$b>v6j(U7JNUU{l&>Iy_Xj67c|%oLLOa@b;h>@~vSGx7PHO#T& z|4zj{+GUk{f;xAsgILS&0&d@D;CW{FP8(6g2BHnZTlo*pgj07%VV8X)JSsw;5wEZe zTeNNm?No{}1TN|byAUoM;Ce8G%*NaFnie@xchI^}tf$F&R4ahi?<8uU-LivA`ii|Y z2UuKvioECok|N0eLRi^mRU!YH=3aH>{70V}x9WeLRGc~)Zu_z_vSU?&f$(I!^9>}4 z*bm(z3{f9#8WH9Wa%6gHC0(2eosr%{nqyY*J#RSpQ$8ihFUCX3EP%f0VEmQGA+6gVR!1hO*#KA?j@nYU;ol^GoX0h` zj5;(VUuW*C*ELOc%g)@nN6C*yz8FJtm>*%bm;*a-cWN0RtlUxW(D56La8sGI+3~hv z0#>KmOgo2R;m$!`?Uklo(&XJM_5OP94MQ<=$Hl7A=653(Y$aiVCs0=7#_CP@8`o9V zGE`6*$6T?*Mf#i8jQ>&4&S-9#M7S_h1`KnAGf06RMgo7zimoYOZ$n&&u7!}!k;C-W zOlA=*qs3i1H5Y>TqLe9zGI3`opC@~L>iSqvz0c!Swc>JSNJ?wkAQ(eY0<1i_v;edY zf;Rjx$W)V0WP-=_(usv+&8`}daR0*Uk&ra%?XgkpibdH}fzFZQqr-lSa)sODvQ#{# z9NvL};`M=nfk;g9&OeuZjT-7xY)vWx4<{wC4*&hWnO4!D9te!>t>4D1dBJ)LkS#JZ z&F3oj*Jwk?%4HE(V;=2Gk9XyO=qvx0@=Dq~t-E}piH|em$%P?$8TV(os;A?q1f<8s*G<@h81DDZe+`$zdw7|cp!GqAgKB;oU; z=hnaR_eDbE&)YC58%RHRO_pTNi;a|aiFUZbWea8iavy=OF()Dc=2oN+O_n4UA7n^B z>8b2c8>x{{aJ?GRU2J%DSpJ4&3heOmE$@zaKk<@<$LVH1YMsqa^S`*qaWtu1PP4+Uf>X2e>}#b@1KtN2?+SkQ zbBmlv{JHYF{p-Og+*YrfLw>*EcF~7s`S7HNxAV>7ew$;2tqwcc|M>(O;%AA>FfX-52ksf;7oy7>>dJBd2x=3~+eZ#+ zE1Y~npx+X8D_E~~BpvprEmJSgz~Y?lttCY(&7;eGm+Hp0&8Q_x&5nx*;qz+H`24g+A8pPE;6=_+mQSkyTTAQ&??27zw9by-Gs4b)?UR{Jy1%`4 zB1yk=Z2Q3a(P^^6+j7ndDU!VX!*r6n`@~Sf)qKYyTzE%$Hjzq8(tu6J`OeUgsS(Gf zYA0@?k80F`+N3Kr==VS{??4{Q>UGCov+y(I+-6?7_4LPEZ-15K!xSk^vH(3E+va?I z-R2f~wk{EXTqp^ihZgF4*pu9^ERrcL`vGsy{FE}*yfu@Z0be0NC8IjX#xxqZ);c30R6yotu#k$V-S(_iPK;-4`f z%2J+V_?_P#NEd!{_(GWCN)p-+Q_WGNYGu%UxqG%-*24mIRP^eWuf$8W2kZZ??qlzlXfeFT^8w8XY4phhDn&Sk9P#DbP>RK- zuP}*u^R#3$ZjNYneZ~0c%5enw6IEQ_(YJ#b2@Q^paIt?Gu^gIXyPdKD$4?jZ`j+@@ zi&kT&(k@VKZGLAI(MQ(T*B44W?+FZE5^C$1S~O~OOdnPYe#&^>>x4Jm8l^z)!C;6L zpC*t5op;_p+CkZHXA1S{*B{)v2;EO>kg$kyVu$tcbT(&p%dJH zjW549@SiLLj>h(`v8b1)%w^3dI^O3=%l1hHOmDnP_OxG}$D&O8-*jO%8(n)td&=U^K z3MIH%iw(W0dT@o;kDVNsGr76`CSU-aohl6MIus68`en~}?fRMH@9q8d3};PW@PZfP z-sH>(dmCHk3m)4|`xq|%Rg)-fnM7MWiB!i0DC=a&81m%Nyf|U+;{w&@3wFg6`b_W_ z6#FP=5Z(_44#<|UkN;hnZw-}j$`BC>C+DQyGC#+ExS@3G_c$I%Q8R*V>co#vx4mRa z@vMwLf_#KY2t({Ym70IEbcZz$KjmK*@uSIWx2*rXi8yE$=DoN^s@sWbeD4!mx1Htp zi|6Cv+a}qJ!Zkky93Nvw3WK-W(4~p0Y>gK&s~LKT{)Y_++ua<9U(W-w}@;Y3~|@ zT!_6t`bFgsxp)7I;o#qIhAqB4j2W28zKN=@jOz2tX;ZQiXfA`%ZJHN6w~xvK{bo3C zf?jc5cS`_&Xd6vORX*ktUsgW{73DtMv*Eg_AoH@0+p(p9MT%ug5Eb z%DVUFX#M@`28FRNRyry~UJBmLUA`&AxW!2u@bU1@W}93Pl*rayfxTgLs{Oj{kccKv>g%;gRASoTv9nv5mrEDmnG@^ji zP^4QxBsUaE1ylq?5TqNVd!rko{95b$8%dRq40(wQ0m+gQn5XhSGAled-kXSH}%Zq+bDaF-y6?ax4S%xd77(S%xq zDDQo92Q}}Tv_v_nd?bRisF_SiOm9kf{=z3(>=<(6G>w#)5{_~!>|fHY`vqP!al zPEV*g+Yx^pkgfL0Pw-nLDb0y;U5Cwkqo(@i-9i>2rC)-e$fLOF{_y>$Td30N!;!S@ zzaRE=#2t+cQLNXQDq8K>9~|b%)|EEg(I+;dT;6gfZB~>@L*bgUDd$Hz z7dUI(nY>wE;Mh-E%VfVGaAv&9z0kI z{Tp42#)>usm5*(Tb=Irc1xX!~H`jNYB_L>eC3j3kgxmf8!mCpu{TGnAae;lG&(Cm0 zC3yo3>ACp{HYgP>OA5J?I!x+r&sU(^Ye^>S`UAX{9FV6^&p&NF9!Ko$Rx^UI3i#`K zm`06O-L< z?@iwlZZxWcu0Bbs9l@SM7Kh?!QnN9g=2-MqDDl9W-8Ogi`J-k2)s>KFvz2k1`57kJ zKt8k<>`4{>8+QbL&k6o<=hwcZA%e2?z;+p55;}&JzUx^}F$tovW45zD6)sN13NglQC(9ut&$@h_v7Aa(1 zzX=+70f2-)z0Mv7YEHBpdPVUCYbZ+H{2wcsRN0BJLg=6B7Gc#aUC6rA`B*ObsN4!C z_P1`re#ooDbW5?A8kq^BfiJA)u>1SRAspFYr-YE%vG;hJmO_?N|Dc!OX8i8!ENh`O=#1|?b_V;-xycf*t(q~o=EY*e*;7aprV zHO5}~@{J<)=+pbf-O28EDgaDfVt}3ZyFy#IHcapyQ{HpSGS!4fGg;V%Ng2+Ktl4toR+9h3$PZg}hV4Rb0*r2l|flKCoulKrlh%BWK zn@Luf;jLjm8>Lz6XwIZraQ=j;YE90+H|}pbwmG~R;={o5OG?tJ;=h}ff+T|-fsu-* zUCj-v8Iae}xEa$SfY+lQ{pu%tGV#q*_0pwBomo)8pnNI;%zLmimq-F>WO7v+dhl z-zxwfG@p9jLEpM4!rjXok} zgkJKv44l0J1LykjBm7SuLNqXr;CS-=F+w+66xOh`(BOJ3;~n+y z(J3RP2Q#6^D-_uM8ol=O6`9A$@kDFiL>|Nx@~V1yH8RP7PqdOLu+x9WSNjOyP)2_p zX96$j1T1YGJSh#iuutivWHF8s1bMQ`I#4l@h#zILHm52MO;4h{+>=| zaghGlW;0=*`^URZ;5K2XQFO}nTd#! zSc5})_7&iWK-AG+Zy;i4vIF)Pz%usqaHWi;HAwu1_Z-EGM+c$$;P0`s{-PDbbS@Of z@`;4XPNH?{Mf%v~(y*n%;?wFp%C99sQLqY~@trRYz?6VBc{4GmNbL2m@b@{v{kN2O zGv1Os%gs^O#sA~$p^j~!T12^U;uA=ArMC<6?;w(r1HH~~YRG7Wu$k357IBXvki0D9 z9}4t3>p%Ot0E?|O2P=nyMXP^=K5UmPyG2iXka{k67Bc$5OXJ2Gt-XXJem%mA36uh8 zUYX6aqQSrUxBR1o%mWN%z1sZ4N$FvX2{-XJjY1^b?;5XmEv@v2ECV6D-Q*c<8rd@X zv9|n(hP+&Y&nKrjf`CY*NIB1}$cpO%$B*M9W!LP}m_O-NizA#Q&2EIhZiVx_h$hbC z#HC$@6-f-yuUdC!Pc$2bfRUiAi&Ip91Dc5DcQnFB+_+TmW5FuCQWV>Co+xQB#eS|v z$X;!y{w2TE0U5^(Fj~^ow`VZm3V;`Rm?V$1VafCkE3z5ilb`Y(b#koMFH_{5aY246 ziBbq#mJeD6)fHfPsU&1*a-BfEIPCq`v0&Bk){7-uyf7c|qEDCHACP9X)-sJ7RO$Wx zThZX>)5dW5ioinFu|YVnD z13l;IhRkM5_1!S~%(tYQTa!AWt2J{{+^f~ZL>|i+%BNe3=G-Jh_aC>()moLN{P%YJ zZu?C9i%0>dROCt!mw?M!5^QezWSQFPf9HUy9LtkOPf0U%fLPLUl?SWHq7&Snk6_cG zg+c9pG8p#SA>A*>CgrmS4Tp<*36-Y;%^tW*Tvlt1x}QS*8?l*a9RLvINx+&p&WMP2JU>pM6-%ECv;-K#&+COp#roH1;!`F5 z-J3)N(WjS4KUdx8btk*KFwVF1NkRt1Gtt~O>QEuhRJ2UTjD0M3x~Y)B{3aE{Qhgu^*l5bGy9(Q`bhj3cxC` zGLdZ#h0fp_^g!!(`m{`HW9^HF%X`L@R4m)SZE4n@t)Sbdd-N_R&Bvd#9@Kn?*sX;5 zZO_@?izS}4Z48nTA5AMMAd>0I3lR{>`XJhZKzIfA|JA#>Lmzwi1YPICjz7Nwx$|*; zBJ=_}$Os5dk4f+~0}w2C3(BGc%!hNQk;TC<(~MSkF{yUS#DXRslF?LMarf=|Mt5n4N$u#3kwM6)|G_` z?(2Vczs<^RDVjPzynTz{NWhoR`U-)kmm&4Hdg^&= z&N;5H$apMiAEYB@nQ2__v^Y^$eB0j_Aor21-+$*dRg14p0B;uBRtxF!K@DRRu1Ue3 z>8Www;Ee`ip>G{CbBE4^M0QL#+Nb-`#I=(L?)l_1_xdeoZi;t~$WrKx7ISpvA38WR z28$gJ2F=_$w{%01d9qM)chV~i&A}Gj%=IaEO!RKer44@NehuwZ=UbIk6x&)&B~#{2 z;UY-s9VfsaB)0u<%i1W@ykmH{Zu5ABh-yW7n6>Ku zf`u$B*`iqd$_(MA?%?!bsOAF^H8naig>`_#+z0r3b{JtDu|qG^@*#&dT5MvN@z0sk;vxHK;u}qtHrgo)cfp?Xk~NF!1pJ!9 zTyPA1gc(W9T-+a~D7CX?z?F;rctkXLCpPmg%jt3bYMwr&1j?`TDxy+LCK2<&zKD4ex`j*4> zwgX<%C>kx7jm8ppeZG}?ZLvjyYHiTX@<<%znrxs;!RSUfW9@gk=S+Bq@#OOMC499) zu-O%4SUG+k3=$Xr7AYmPO|zq?jRtkYZu}iaYkoJZD zLc(G@b762y#-5o;3dD z!F?{#YatlgfsqDbRlmue5SiZ6fnmSh-A`4lJX`Zs`={2^_E~2G~!9_N; z_l!_`0XVagasW8kkA`1T;tu|3@s@=7VKAgqN`@~()t417{_RG4gU*R3MO=StiG(Q? zU(1SpB=G=iB0fWcb!%@M{H-qhq?`2vT)JGyT^#eDy8U`H$aH5?;^q{}CfV&?pKaW# zp)TQb9(&s0k2OzU^lTU{b1Q8{AviTd+x*rU!ObUf_p3RsO@#lF?M5pXvidv=_0Jyn znVWA>jYHmQFoNKsiy^az`jpqD7^PKM#*ljX!xT%xhYrycDjdNTBh)8B2%cj#MKq=tS*Jg{GIp6zzI8*whV!N_-O%1ovY ze!cq#o^1KJqseH-ve%zC`M%s5yqqtAB&2z0v*@_xGOU$j|g&V*~maub=8LEh+qx z8!?DLm{@~NObuy*M=_KhjsD)QDu%~k$t3RC@)qp)#n+&Em}?viCUr5@YaBdq9XN`1 zMyvbKs2iPo8L=_1_3(jG6I9dzD6!vhRpn_-CQ9*vsE)FZeA1- zZovgE;L@~5-rd-B$HG;aULPUPL}b|tH&$}(vuxF^Az<}6)h~RoLAugjP~gUmqw}9? zs`y+~W4$}?>8Mj~#3$VnpUpD)w;uX(OR}fBV9|^05iE9z)AE@b;mxhfOvtVgV3yFm zx_J?8>Ps4^{!95ffh(K;?`;j_F3IcCkn1*tF9x~@+i@(QxSsdF@=`mhsy@~C{Q?Jg zTT)bphQJVYW|OwzhQ=fH+PxotlfPF)51Idn+p{Y3sq%d{Go!<3d+tKC{t<{#xsVls z1*dhOg614IRMLeJCZnwzs$BF|+b3Dv*z>plH+=z%T^kO_<#9x#3TVer2xPWRlu#7} zKAwHMFi}Ur-w#(xQ6ROp|9DW=I<(uk%*h{FVY~z6=AO)yf-MlG8R+nDq@Z;ShczpS zzghOf$uEKtwCxDR$nRXEOC|U(D?0lacW_A#vW((5Xir_btqGVPZr=OQ^FWx1>rTtI zu_xJ%dq=Q^*rO@hfIU`>yT0<{S9^y_!`pq5S)y;eV5%~7Ft~g~)-%aS<&o=RSmC>0 zfxMwqy!8qns>pv`f(Sqosl755dGd6Q^%KXBWu{En!uZ*Bol#HvK12E=?BxsE^XKl4 z)F0;x4kp?!h9WDx$qbl=Y+qU+lL~pdJFEnWt!4KmH-t^0x)MvbS@Gj8&RtT4jXm`s z0T^KIcgip5K`m%(L3NR&a(JoWOlV2!jt6 z=sWKyy$VAp>T2<}c!zAHzipX|Kw7923L?c>(ISzHfT>}O_y^)iGwfKVw&=|1N1V`U z#8pGO{N?`Eqgh$nJ{c#Fd?MRTUY+-@Hy3*G{D%7Ox1kP1>=3Z_lD5VWzs}#3!1mq^ z?hL9W1jtp)^>l9}QJGJog!ih(UksZSVb{rQxY(WYl0c|n(;R6!fyGx|kKqx%un@X1 z)NcmRis~9v{Jz8x>-Zw19GXy`2t8%~SIT6gK^QU9g$D18VL6u*j(ImK$>qC+u!xEv z0NG{3mDqsq;#C=t_rY`XSWxd7X3$QG)O&6=#U3u15uKRd1G_V|om84!4ei<3NMeXZI(723OS6S+TkU_*GqRY-GVT|#* zw3gZNZ=d71e~!HztvKdsV~N;?l&WB+gBib+(Qe+8%%a@vVE6*!6z9I-cD_B1{v`2m z%=bX>G}|SirB7b*w3UlmcIfTd1j22VQ`v+%`uC4M+OMT+#xVh8*5DHp`P@VFU~3x$ z)2F+BiakNdMGC_^%&BLLiSlx&ZKrcMEfSyqgUZkFB#Y76sdzL*K2IUh&78@K#q2z* z*KKfw?R*vRo{(iu_(_=MFcDp}BCjh?D;2bQTN{{DVBuYVzV{HbRap5l_RGihy4VPZ z-P$$$MxR?0x4qwymWI37iU&vAw22RHnpkWO+opJ-WqxGwTYAXc!i7aEXqb*YvBV7a zVJ_*@cj4e4@hkrE@3ajTv}@CZbdculf>Db{E}GY}zGE%fKP9+WmmlX(=rRgCM<5ag znJzEsI!L7^5^o&5!iayktd~e@a1%S9~^+=zO&=deW1l%=Gqjl5dtQkq39 zujMnDIVYB1#BoL)8_%vTB5;)pH6?rNDTf!bp4O@x6#6QgHbOUzE?5MkEn-iW5?ceQ zrzeMbEftH_bT7AAxefN_px=NC9Z2Q-i>mmrG7(tRY!ozG;)KpAgg&RGS>VzFV7%m;G~7;I=pBFSy(ZikvOYz9(eu zaJ_*So<1SaMbZh0AEfTWtKRm69KVjB>Odfc8EXmOoyhzUfA;MfS{A}yJV8?2gXYJa z<#k#*elwx2lsU7MXFrLpu6!ulwc^$!uk+TY9ws+!ExF@;K1|7g+yBPj*A%=|lvbvz zPPkI5bcz2AbElo1HuAJK5RD>ab9b>xuVeK%vyM8C(L^_cc-D((DO$*c1pS^qB zUM9Vc4NN&HOHj9w#Yg<82AN|zC$eDBKdD(pg=-%DH#RXfpoC1gK}gjToFntFU9T7s(7-FnEl zEig)c+(1<6UAc+>qQ|{QY;K&UNwA`mGaL*tBOSK99KFrl9YGnwwy*ec3Q&|OSY_(!^oZO*p`6)^=e$_Q^2pusk%x@IW|b$+`Sg^7!?a8PHQOKUa~+jG z=cF`vgh{hFR(sh2kK-po_V!NA^#>_cok;7&E~0#S=cp>89xGaIorWhni;rtSJ-zB- z=1MRQ>piR`wj|Qk=I=GzyCQ94!PuyOr`JcNxsk*yum_69M#iWMr*EX3 ziaz|w9?<1p!>0>09Vbduk*U-eE^Zi6F}Sn_o;#D#mT5WmcE@SIpJI18&wI+QPUw}Myn-uCH`2xcxk)qn*@+NUkFCJ zT%8{8W5)!(zoyvX-{HBEsOVJrj;v@183!9gSMA!EPWu3HVJm$iw~mdTO6F_$59Ib0 z*2|ZShHPFrr5#cKLT%&J!+Mc~4GI>lB}A3<^g~@MURU#Gy$)t*F=92(tNS?%Wo_bN zb=?58QT}}6_i%yGr6{x9P7|;)F#o(%aJ%C5`+H^+vLCn<(dl1}O-4NtwH4W zQ(v$GdHbSKnl@cLa5m*9XI{|u#@;6FnAz-yA?)f8AD<2npVeATa?=l-6#?OLA?ZO` z`8m$#1A1XtFN;^duR#-s^|ftx@U%tb2xcT#GFai{uD1Z|;=PLu^?iiO#!?fDes1Cb zk-`@@oFMw=*{MWc8C<=>rIqMkdF&&5`b-|4?LRyVHcQ(kDBY@DF{A07<9udeJBG02 z1lJ4Is_PAk)=7$H@gdF{kO?K>1s(O-MzxK~m&-L^{+MpG6@G`K(1CNmfs2w)Jvjh6r4v3(ZZRn=$<-=Y%KY82fw%D4viTd5`^v8q41(>$1J}3% zVuB&|)HsQ=9kQ)v8aWb|30S`b510{1HE!d#EN`Lr5Pa7E&1;4qxbsZNa3tdHR?dQ1 zhMtX2h!PtG^q%0Xn=DLeUthi-bZ0D*oZxgi#KM}OFTgLw&4lu)H1HFRBy$~B8Vey0^itBpI=rxm{s>%Qr=pDR#`mVIanRaWB6Soto^`c7%;nONawxnC!(!|-Wni*^*(t7XAkSpnKo_IZoFWVXXl(3a` zC+Ncax$m&V%S!!A&u^7ge{E0}gcsLT-5GW&g*(4nIbL+G){hLly9k1!0+K7Q`{!>| zpDui9KNWu=ag;n%3gu8@<}I|(6n#s7!}AMU+To?$;6XLMW(<3DN3tV*&3{|lN5n!! z;Nxb}lV9x`=*K8XK=-gK5rg=n^0t(w1Jj(A>3TLHQIDtkD<7>rT^POYju+R^*$U-; ztZ>jhc;`)2BlwOPfM>mv$N=d^6V5u-nG|$R+8yUX%Bm`#D_3)Mr+fbe@UEXyxDJG!lq9tx;;_aX40Z&N;$>}nSsy1PI2j2RJ$^3dSGR}94q&8l$sR}f*7Il-2v%zY#cOrd&+5BY?A4~ z)$Ce{K<53nvl^R%4<+)neAWy7?^_4o)z*J_Ro$gU9rJ+FJhS0Far(sO^IcL+v%gi3 zHZyWgPxyofXzep8A6d;7la3qrOl3F@{dctN?m+Z7025lmR^%}Ub1VtkfxqFjUUaej@+b0bhDI#c9&EwkLq{asb5^6fBF zICav+xAEN8$$1yAiP#DW^lGfEj6jdI^W6m_`2^vae0wup=eh69R8_mb;-cPcJ@uSs zR(L3Ssw0Yj-5kiS6OaO3F_{N6k8^3RiEyc|7M92_Q?%xEMLq;Og13mig>FV7+{3=p zkv8#4;>P$?+$BJfhaj>5F)ID%_;|0EV`LoiWk-Q-O%qzZYj}86OKYQTAFO5P{gw7u zwT5p&sOq5f6@{tF!+pt#Tw`_d{&9%YU47H0RHd8t`TmOz_=WxTxsW~_Q`U6~*dJP) zCd8_f4Mfokk|;>`orva>d5B1JvW|ZJX^SG_8j@6m6UTy2uhW~}8n=gy=H-?1jMU2b z6`T@(-}%daGKEc)*Tqz`SUS5QMSkAGgsFC!gh7woY8tUryr}%6jWwNPHdMvSH%DNA z6oBrA`dzd#T}TpA|(9!GzUm=j0Zu7a>Ez0@rU zsndkg-g%0N|2d!jP=3T|&~{Kf2dU&b@;;@4aIRO+=uOu1JCvv{Q$O|JTiF#vuV0M@ zD%K^I%2|U$Q-t}PD~XxCFgzh`L@@a20-xY_s}IN|R_WUsS3qImiw-iah}^RU8g18a z8j>dBDRTi2%=xKCu5Etp`!VP1Stp)Wy>R>{64|_+$ve|s6LMO;u%UD*JsX>CStgn$ zXH>wabVufGL*@&%#9)&gh-{y8U5*pMWCo#2ugj$c>%_ig-{*W5KIGJ8 zWRM~c_7LyJ_29>LMiJArtoFJ*ir|^UGGsN}`l>-F#eh?Rc%Prg30%J$lYy zVXUgcV``CNu*iJ(?zq1_MIBSsGnYSS4QE*zu`Itz!+|r6+4L6d^nh&SG0Lm?sJZAa zG4jJ@Y7keJbkKC&dtmpJy&ZuK-i@ zu~+C8efx3g6i+;7)~u>aZ#`_b^o51AQk9+ZVd*uXc8B=4;Z$F|NpxfVZ0Zp#t<{GTQ6C1XF_>bB&m4gQVu^z6}GVM?rt5 zIwqX_L^yLDiVCvY=dzMm6QBvaB)i3XS)I?jcw8M6Fmo8h1ZbxL^?5516*=lwSDxg(osQL8 zo8+aU-3{oC8CL<962se2W^&r%A0uY=5M zn~gq$iq4Lxkwv)7QEVS5*~=m=`$UUd%AYJupEQ=*h)q?l@(N7NitEHZkEP112^895 z7C({S^Y<3{b@w}*a=qpo=}A6tych7I)vAmn`aGSArqH3rUi8|=Z-)nnb8t>cX?4%EMj7-&z?d=qn{o_|1(ewD}Y1Lb^ipWY74 zjb(-XR+Xb2H}($~=En^WVlVd&lDQ+N4h%~&bp$!QnyD9!;ny#zH5)xS|aP~~RuqN_U(c?gEg zJt9g1TA$kS?CPFunO#2c44^0#k=WasBocNd8?PSm3%u~2%i*FreMq`o9skOg6m%8M zU$s6MDgP+BGk8k@6*_Q78sQ(`=_r##FWEESazn8Hf;_F1gHyl*Bopq(OpevStXslOzoecy$F0}~bWK91 zL$_RK3W}n?*fZ^jcJSp`+i1w#nc=m@8LES-tS$4WMo$r=nM8eKeQspajElN|iheK( z7*7xi-l{y~a=ih5ugUq+1?ba#_ZN&aHCVtA0x}}r6C0S7nyL{p3>rKe0$d{y&654` zuBDCJ`EpU_xUWrT`oim_nnV^*tA69oZTtJEkL_5$c&c^M_A#L9 zwx-0WpQf_oMuT1sGGpqyI@xn5KI@e>QdhVV6?=Ah@!KuMFH@96SKC~F=B13Nn8}Wz z;>O7Z`g6~*y!a6C(jsJ4=v!)hO$U6TUmlj80-BL&J;p$X8`n?6OfXObV2;NPjNAx5 zanTyDdu89_K(l3_D#md~VO4-ooPXsf2R#8z;y>qgIv~I4Cun_)L$|uH& z`ucQfqd{UiGiAD#vbHSnaQn};l|YJ3DkaHfW$2nhbM!I@)V9(6ooFi)goeWZ2B=U| z+1Rs3e>G59hRd)U5)Nq$8?|~U z-y}_g;;O_o#$v>AO1raSHb9j#1 zjp@-S!%VUD@sb7cDG5i%`wD{(Abh+bI^ub`t`R;54WA^W84|9%;ooK^0srTk#D!y9 z85=3|7tKBlBfPL8xHQ4NnvgTe=-Ll>vJbK5IA47XaULdg;Z(XA9MaY7m-FIhKLNEfk?(Vk^1liDDA^OpMv_0_|*l+Ws9-;d3aH9kXq6h2`=TulNe7r1m5a;kr;(g93{>p|Cs_Yf@juC+U1<+@R>) z62Y*)5O^(D2K;d;QZQcaOD3eNfGh*T9E}JP&VV!u+ZM~{d^zb8!g`SgU*mC0D_GsH zfM1aWx7!jo9!&T8(p&fNW9Xx?HSkF$0G$Z$dPZCuTB|*n8$)cWu^~42d;3@TUr~ir zQ1p+4L@?rXsc9x7&ZwmzZsI7R(miCx_0L?f6st<9Z?w_qdQhUtd18fh9v;(x?_j_*P;r-y;i$fRT5QYc`9fkq*soMj+su zv7UlxjKYahPfrsPY1kWceB5M~b5BT{f!MG8-Iie=WKu|<_IBA*uHbp zQhH(XWs2mx-|Lf3JNm__F4Rp7&jkc%UTc+1ktX0|r-d+ldw`;&v}UvC4ktr59Snkl z_UykwGvSz+9s*j-pR5I{`o|DQu<#0V*Nt@YU7ZopyZ?dG%luwwEU2AR*&)I9+&#j* zg*UN5s7F3?ee+G!AWUJz-iz4yFn~HAdpis}k^#PW4}NBmVuNsK$0mR79VtaGkI>*X4mQ^wF*@llk_u~LHaGJ!O>9bH8*w@4Aty3kDzs>nv zReymY@{fNDoxNUxIyf16@53$5I@uo;_RJsx*Ql|pAPS76dGmB36T->Gnf`Bf9N_|{7n_@L-riG_oqUpWSp4u81h=+d)a zo&X>MfjLR^lh19)rW#=!*B;@ihX-&F-{Sc`S-$r-NA2jg=j%H?Pi`h;fJv6Z6|_>( zh-m@zaI1UeS+55o_DnMxdOwiR6FJVZE2fktT|p*=8(HAj9Jqb{EoMhvX%S9Z#|tr2 z*aCCreejRhbPKT=zQafl`-|{ts~3b}8w0lK%JyL8$uV-N!^LE!0k18C_PL^rFbzdQ zo|o^r%zhD@Hb-qd^FOHR_Pu{Lkj8_VSzga^!Tynvz3;pIj}>xC&BTYKn-M_Y1_P1J z6!CxcWDult^q+O=L-&7NnZIWL>R^L}>9Zc#eltF3S{^{`A(CZP2gSLr?k|*wei~=O z@i6MR_oARpQ$(+Edl-|5q5Zyv;7<72ch`AWVT`@XNjUCoLO~1ov+%kDOqKLkXlNt0 zM9qzh!$7Y-)d$W4u4#eA9wb6Bm&9dt-ZeW#{0*23t+cG=aQvjR$~qBP69k25c7Le% zsejSo63n&q-7QyT5bLG$mpCvp9ePx?aHcoC2`$BwupRQ9uX%3{dT0>19FywHq74%P z#Wq;qXukb;-91tJ<}WX+iNNQ!9)UXr*IfUL14=qO0l1HaDCk)DW)Vq@TqiMkCXTJ~ zNrlgDIL-wArN(}d^xNArXaTxKg6m1t z+Q+pZ4%y~Gq>Y5I+0@|wf4PpG(wfSkD2SR}YEUE6lh91zQfM;_jj!}8G2j?Rh)5Bi zWffr7)e;aOG!$F$OBj26>>xfNj&+3NE+63B1DD-jtz6%S(&S}%@t){h5Bgg)kgv!J z%hx1&MHVNBbR(Kgq9lLt$LNzvPdEMudmZ*0G$4&!Gn0QRNO6?=W*p(cI9`mi@4)Rm zz(mh91h1F6$q<@?Ta?OsAGG|pIF!QL&l|}>B-Gx47dd@;yy0L}NMd!$|3w4qwa4(a z0x|U-bL9@38o^7!tZDYsGPIF(K~o@u>FFjEY{-L*gt;)RatA7R044rtG5B!U z5PPcG8IC*0&5I_0t~XU9@u;h~O$X|r@kT+Us|8?w1K6^UjawV#NY4&94OHxK{cqRI zE!RL)G?RE6#2f+TEzQSJu$?$;U=B6{K=4LR0UHGvSYr1k9^^zs6MOvl2D~I6Gj&QL zDz>erxskh{H0aoxQ$!oz)fSVyuJlF8dmf^o{KCEpC+QD~y2mrh%Poc(`LW*jr z#Qq+zgyPxP7j_L@;+c&&TWF>Z`Xx3X$9q87dF_EC!Kf^mSuGugv5Dz~8-HeUNO>Gp z{Yn=7?zg@j87z}1bX&Q(c0@`96TFZ6gTSKPov%nJLCuSCw-~l&!Lyn_4Vwc$3F#nu zeSMQ^k&WNLjV{3Z83DV^Pve64w|w|te1Cf9s-0x#&-TR6^TCN~`vrl;?+YZTT{djT zn{$FV6O8CHO!Yv5>w2Qs5?3+q18ArNX?_CakvP}$GW)HaSM-a2ymj(0VA_6U;)D$N!M-1(?V_>MsYUTsrln z2BAeC3T#LMXG`^0*D0i42E5F5Eyg7z;HYsF>!;9rTPUh}B9F}SvqZMyAA6aHEbiEq zASc)yk%IKi^m4I06XG=GF#U)8F*d=3_z|o*Mn!_>MN0xL76=!n-u)~{-~htS5~U}f z{4chKFHLtJk;GtzQ@(+tyH3+}O%O~$RsiF*Pi$ya7R0xH{=BP4_=`{>Sr{oAxNC_J zZg+J7?--qen;6j#lsX8Rwv~km+tC9Wfb|3pXAlp@eVMG|IGgKFFDFb=?&F3os6mV_ zi`^2!g&rM2V9-GDVDte}#u8E)f1m-0u-di6qY&|aXxa8B^y$YA$d?f_-~*<{HJ`(G zJ^>!W+Y2*3=;y4a7gx%#EgW|-PAP&o4`Q?rEg`c83H*ZSmuYz>|Gt(0>but}CQQot zd+E{&Yd>`USJXc<$GK9AXd9*OeZ8GJJO8aL`4{GI@|(}PhGBtur3B9jnAN{C?{(x`dQ-9umEx)(@c$1GdO@d{PgW#C_Mrj08sH4-TS@(j`Es_}gFYxFj&T%$^|6 z60$_^AR97d8kN#)*v`#}U7-e-QFqCa=#LiH?^Q!FI|(;@AGzH?JC13qu5q zLFH%;RWt!92e;IPOQcfbiwh-k@DzZ*gR-+d5Tj*P*uP;h1xgL*aDQ|4JT@HMh^jE* zIXvdMoTvR+M}%OMEe-A{z>yvdZ+#n$+t)!Zw*Wr$)|Xe(8|N_v9=5;HV896%e!4~= zD)r8NnbZi|UnVQmM!c8-Mq4}_# zSUN6PGWRk9Jc*tm~5 z#H%D+%4E445>g(VYw;-P+%Rnse&9xsRRnm^;wEau+PevuV!_(Tl73#0$X0dQaa2v_ zaoWE>h>b{o%O4X~C+Atk?pnjKs zbJl|f*NE?ymX0Ib4;R+KXhj(&oeNwm;Cf9->#e%KRNs13VvT3ETW z^3g50o;OwEzD~hdY~V2g(I?*iwM7X^rz=!ir7;z2m+F8eK>|iWs`hLl>R%;T{Zoe! zWp~xA!b>yx^NBzuGhUwa<*YO<7(@7MKogwxH76MmEfafc_`O_RWI{V)ioMp>;t_`a zPYGsQt8?VSeg7I-p%|A*Nn^Ul8h&QdGx(FN3_kM15HPZiM`xb0m($?lM^?c&5_~B` zBoc99`4~L!naY6{*c0tHFXYsX{$#JeCVQ&2ENNZ1l=k;=?bDx>E;ZiU*`+m0g+XMk z8dxF6J}v|nev23&dK-Zt&wwPYP1b`uixWqJz>}HzeTWGIpdL#=x_65k6fJEhLF~VN zG9lo`dVyU;WX}?G*E3OwmHS{Sfx&eh|w75Zi`2AO*cP)iI~G1k3~7nwktq^Q3SM$RJ5=Ey8}{z@0DeJq_+ZfCHae z+Ypd%=BG=K#u9t42^Gj|YBq+lgL*GL%#H5U`&TDXXE%gh6`GD0$~js13m$9J*7iFy z_8Sj?;37B~4Nlc|y^W}B2~5?l1t5liir~P7Vj7dt0UOm4iUI$$2QSiYvU0z?RLOu; z9xvVMM#pc*t=;4f*Rswbmyfkn{@a%-64MN|Qi2q-E0smy-dN=jLF)X2iFZR>A=_#!jRyH%^LFdqrztBsDBC7~q zcLgz2qH{Uj{!GR>R$DuyG1cF6hH`T1D1%WV2YFUt3HO*q z=@ul$47*|P#85jtDBXtLG4a^E2?o&YbUPKTQV!uEJ+P-4X@;N}&hlx5L?&e0Idy(Q z&HaO#q?)s1i3#$&nMslh`{oh<++U$Rk<9XyO`he4T;jOj2h$}CVYeXD??Dm(>Ty_% z4sdlr$+#T;7NT;Iu%>+4eSe3(lhLzw(;NV2@U^pWeJEDOKLFl21pK1*K$i@-Hd6UbxQj+2_Us_~L{m6;iN4#ft3T;A*c#8K>mc?w!RX1w_6I50V%;n^ z_H+CXdU}}aPK~6I+uo%;qL|kOjXKf~J@QGt6C)d5n1<&G+~mft+7G>!g|!zv&46q_ zy~e~XtJq?<$kN;Wz8I)EW__=O0Vy<@OguF;z6I>3J%2~B$G3{ka>1P^Eckr9|1*2| zrGg;~t30H!X1BX6Pz2jHT$XfQ=wX1ZBBxcp1c#t6feE<28!&6O>5iV%Xbk}$sYm++ zVJ~#lrn9tTlmc$Crq7wAF+ap;-e|GqRY-7_FTPYA+&#W^2Sn?~!RxE&?2~J*=ROEx zpO%BbgYDQTOMbM!pATGBbb<0)bI_4l0_&ZlH_0za)8MRLH~A=g*rTM|L< zpbk<3fPMXDfAhqyBSbl!V^L*pbPI0U`D%cH^4}2~bca&tHmIFL0f;CuMf8hehCcZ5_aGNZ1peCESYiK^2Cr?JfH& zvy)C8BZ3+o!0&Z@ML2H z-&Fp;Tx!)=t~(20u}muX<}plVBx;~?s1iZH*hA?lkg5HRB*)g9Sl2+XMl!vGXlSA4 z4Ej1hUY6j0G<{`UQ}6%x*$4$ix|LA6y973sQb0;UsUb=zDIt;@Cen&X3J3xs0*Z7E z6{J)o1j*rOkr=tb*tsvhzyJL}UN4{Q?Cf0UlkeC)E|MJcfvZ*Mro>#2qZwN_)}<#I91{p# zJ4seOaB9$l<+r~acDIV-YMSDX9GZz`Oa~IyrL!701GF_Rm=&tT+%dx${!3Zq`Qzs^ zVsT@%{VC8ovnk;eV*51XD|4{Wv(DE$U(UP;>W2S2#vl8QFR{aE7m`z3@)2hRO)lKH zWKZo-gL*DU_MQl{+f!I5QcTysds(+Z$Jg;tA9UVY7q8aNSgiTilxix3X{?UhRl4&8 z+f5BRJnJZ8)$NHxo(RwyXHGacZ3fi)!zK&Zlbo%Uk%I$Q)sC~UrPsaz5KSg>(*ycd zB11sCUU#Zhd5dV5JuPin=wZ5q!>onwZi?T^$weD#Pw&;zA5RJpKLil9_g-t~{HY21 znaKw8e&jaKfLeyIPE^@xXu%3;4h~%s!tx{0-$Ctwo@O0~ea!UJ<=~um8`B+ke`-!$ zDx3nq+UGekOKOr^epGj+q>hmi(fsl|9V*M(*A-)Fo9{dM@~qf&!5UG zTSRiAt^q2Gd+C1bIQ@I|uUQg4H!@qQp80E-$MsotABH}GYC~kc!1zWIV_jhq<9okn zb^nY@bCgBim2$tVNg6)VS+{<{B9%Kqsyg)1b$`E*q}HF|w~kn{o$2MVxK~7Vjkq0e z+NFT7JD^{$@Jm@Yevq_z%VI<79jE_UQG4~B;P6zJM0|lNG5e;-trxfy#lnR`rYZj{ zH6*xCg>_cvJ+ei|;3pdcI!_FzFc-< zwD>)tTSx<0q;X)`wpEPVE`C2Ab!&D*qOrkXiR)h8ttITTCr&myfziYvwt(tNZy8H1 z7wh;F`rVPLs*VVH<-@$%#gSJnxV^+m)1AS;Q*C_k`os$?J16do{Fme4U3tw8cO>OJ z0FDnprl!+lW8~ellJtSSZX&~szS}#X0AzTZ@E}851!1jrh@)9*{M?21=lA>Cm3Tyn zcyRXlPT>ep^v$>c-+8U^%!C+hkp%9>g$PfUz&{bzue8Gg*r{qdj~yN>gAkzAh20wM z2qIaWQEQ!Tns|6PqE8~cqY98nkryRE3(x=2E~IWMs=*A$MMQNP1iha#+vgCR<%KQC?J96e0CCQvu9(IbsUNDtty?RQ-@5v@r$VT$+>EW}M zSzp^xs+{P0i$XH~B`5r9X|5vRwfTuY;C%_AOa4#zk_7rbV6~`xd>!VtSF$#p>!F6; zTrB5gvAjaHi-ZLy5FAgiOBX)zr2Bs}Rp-vpq!Y^nVVgfk0;hI_(~UR%C<;@~N$PE* zx1`?_Xy*pHAhh~#e`1+I+cJ9)!91Lha$^{~hqU9*%{kKaI!Zs-aEdtHv=_KdH8W}_ zz^pa`q}6w7&Yl#_ezS2Tb7eJcsmc=xc3hN3dcI>L)zkd-B`$$9FbPdHhn%SM3qIVg z68?3St~jP-;e*2^NKSGBrK|dFHQdwJotL(cx7<}Jpah-OC9-z|@Ca~mWwC0fk7@N_ zel+Pr&E$P7kw*5@6A<}&*aU+l$Wk(I@-|vcs1BEq=h>M2@1%8lO|RcY{HjoVBms;7 z4qzZ0aoCIhJG{wFobV|4TcPvVH<95?BTcU}9C z87@NysHT*a1e~D`_|5h@&lB-QO#XGIZjDaWn>VBa6l2Dc4<58?3}YuJOY&Okh(B1d zX{OEIc){{m{^ipzQav_1hm{feZFmWx*KMz@1MiXN>CGU8KInt{wZyT7s^+xhGi_KF z&Z!v%An115h$37@5|luPxd2hpRsweUIx5nS6rbZU*$bVRlT`iVTJJfV2X}s_tzIdzt+piI66-C@KqvV#_3H4FFlpM z^QKVp9PpzH0T=N9?*gl7xfS{mz^-8L&|Paz5sVsI@A6C3@$I8GRWiq!3h_Zc60PS+ zt5=VbdM&9oY%Iw?4oi9QI7do9_ItkCto?@Up<(FaBk(3o`v0_1M9ip?oF5z;=q~|b zlC-PSt6vUKy6vP+&SO2+)cO0F(D`=!``nX-++9z3HnKh%1BrPv9Zr!68X?KeorH}n zRVjJdTeH5^*-G#KkW$RN!>Z6xcEVm&Uh5$Br1WMFHPVlBq(e^;@m+}+QNB#*a+3Ys z1Kq4_reqUp3iEVJWiEcNJ{|Fln-p|*?2%mJ;O&De==SQ0-J-BM zj<_@HK2xSg-zH(c&@W6JR*E|RJn6FHtz%M|`;L&!VNx#*|$ zRqX?>4=obGO${f`X+ZZrma$WHZ;RpIfySyEr$`(bPw=T}jM%@pYM^g?U@Dy(}LOBGygC4A&+Pv!m{>gUOu|!WzsiT^$>T)93N!_h6 zIj=PsXfLbySmi%vY=28r%9G!hBwDLg`2Kgr)ar2zGuTKe1?0kW=YxLToCNoIILfxMB*n5B87UB1>7_6^~ z*+m-Zjtd}o+p$xPy4vAU4;Kxo#VUXp41H@>@{j0`RtDt0g&l0AWNv@OzCAu-b?D^5 zZ^nl)+@-C24y7I&z6dPkrofSlCVPDE`K-}rr|&N_od5|=-aZKbTf-`+bjYSp^~MD1 z!|Sdj_FPADF>5S3J~&4$2JH!7PWl=6VkYD)dU_O!zGj3bOUO4VAxvD6a%ie*Q56$z zK)@GS7Y{8#(fn=L3NN=9YV1g{{?;aMQ z2}}$!YG}i{<66y&@et*Y?jJ$m=$07&*bG1kWWOJ4ot3&ELOY-^@nz;lEMH$e-RJ|% zwe$?=UfVB?k3v=Ln==`%1!?yKiFjLCp?TXcFXAE5ax-2&{M80e+;P7_Ri=P?X4TZ| zmOuv|k8*)ZsR=<`r0BAERPN7R)=>?_&-Gqz1G+UM zWyIhP@rm7DXn6)iG75dR1auZLee`caZ-~z)kj4L$6&k3#{tRfaW(YIxPMPXy=wOzQ&n1#Quo93S{G5OuS#gL(#bP zEa-ebLMw==PFxAmy&XfJ7knVy-+0il;xsMri!c4s;r3rg`h{le6cEE3`dgDHoTzph zhzrZ&ZCC>MiND+)T*dnXNxPBMWiXKS#FQG*<*6Ut?B1Mta@DRO;={CWmnhB4hz_R} z#M$bk*clR(WR4sB`elT>-tk&$x78=$Ly!#a>;RO-1NH%UQz##Cpz*8lcx_5SnxTQd zN{A&Hj%gsw=Klyrk}wko7?K06>_)UhHVBCZAgu=sW)KKJVEE!{x%?-I7 zNPlmG$g;rk^DVpOw!0N!Ry_W3vT(hl`SEU1;Ob^qIgcc?LksR5_1`V5gZ_@3?%p>#Ct5qgRUssDvao@1M|6UIEBb^gkY2m8a#7quJ<+2Cc}4f+AE7%;kQT?5LP zTEc{9&W-e~hasnfvzcZO_as3W4MoQj!wI;iKB&e$?!oeg5D-_;`Qz_)mYRmXVZmV0 zkRf?KQ5E8*WOStY`QfFf*T*SOhV^$Re|k(%wcZatKc|VuuN9~C4z4-If0qauxz52+ z+x7C^>CnoV8T~qy`pj`RPXy5n_b&B$PsgcW2zjjQ=fu)^or~>+dUY+syt`Y~v(Q

wQ}IDhE{lR9`@(N+>`@K*XBbQ5MW_%q|i|#H$-@%eNhDesK!yynijK8|h;%fZ^?O zvveJ=gbG4#%&ubR5qI93V=?aZB)s1zk2;x)W)AX{B~=D^u-`1{m~1bWqUnZZ7eI5B7M>HPCUdljPaY8Pahn+7JFYah_W0V28i) z8v(X8Z(y+H6g6tC4~y>HJK7{g8}QCRRlj!gyh05;{aN{VhzUX&yz5S}Fs>s6C=?#_ z^T$CT`>n5j$L5W|stp=HZ^0h&4U#ck4 zbWiVbX(*`nmfz%t&sARva0XvyqJ~x+^%@u=92~P8Gw9JXYw2TcSUQh)DoTj{|CYTF zIo%vL+_E@;@vGpS(asuc)cr^Ax1w`#h3G`hBN&`LcEc|IL|1DKDH&^=h?e1l}kyD2`T|B~gB+wUsibD^K z>29=KG|*EW%;kJ6%R|f^<9{N3Vs(8TM0vg!02hB|%(bC4&P}B2u)^i^OhwT$*QbN@ zQns@4hw~A4jFRX(`woHv

  • nw;Qk7v~8YC+I2oPw!F%5% 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 K;>vVv!~P$IS`|6~ literal 0 HcmV?d00001 diff --git a/gui/assets/python-office-icon.png b/gui/assets/python-office-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..498484a0641225dad628af4d7efe5c6136a72133 GIT binary patch literal 111614 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

    IX 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

  • nw;Qk7v~8YC+I2oPw!F%5% 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

    python-office GUI

    " + f"

    版本:v{__version__}

    " + f"

    主题:Deep Glass

    " + f"

    主页:python-office.com

    " + f"

    所有功能均委托给 office.api.* 实现," + f"本 GUI 仅是更友好的入口。

    ", + ) + + # ----- 关闭事件:清理线程 ----- + def closeEvent(self, event): + # 先取消所有正在跑的 JobRunner,等线程真正退出再关闭窗口 + for page in self._pages.values(): + if page._runner and page._runner.isRunning(): + page._runner.terminate() + if not page._runner.wait(3000): + # 3s 后还在跑:再 quit() 一次,兜底 + page._runner.quit() + page._runner.wait(2000) + super().closeEvent(event) diff --git a/gui/panels.py b/gui/panels.py new file mode 100644 index 00000000..647dd547 --- /dev/null +++ b/gui/panels.py @@ -0,0 +1,342 @@ +# -*- coding: utf-8 -*- +"""功能面板:根据 Feature 动态生成的参数表单 + 运行按钮 + 日志视图。 + +布局策略(关键): + 上半部分用 QScrollArea 包裹「标题 / 描述 / 备注 / 文档链接 / 参数 / 操作按钮」, + 窗口高度缩小时出滚动条而不是把输入框挤压;下半部分是日志视图,固定 + 最小高度并随窗口下沿一起伸缩,永远看得见。 +""" + +from __future__ import annotations + +from PySide6.QtCore import Qt +from PySide6.QtWidgets import ( + QApplication, QFrame, QHBoxLayout, QLabel, QMessageBox, QPlainTextEdit, + QPushButton, QScrollArea, QSizePolicy, QSplitter, QTextBrowser, + QVBoxLayout, QWidget, +) + +from gui.registry import Feature +from gui.styles import BLUE, BLUE_SOFT, LINE, SURFACE_ALT, TEXT, TEXT_MUTED +from gui.widgets import ParamForm +from gui.workers import JobRunner, make_runner + + +class FeaturePage(QWidget): + """单个功能的展示页。""" + + def __init__(self, feature: Feature, parent=None): + super().__init__(parent) + self.setObjectName("pageRoot") + self._feature = feature + self._runner: JobRunner | None = None + self._build_ui() + + # ----- UI 构建 ----- + def _build_ui(self): + # 顶层用 QSplitter 上下分割:上半滚动 + 下半日志 + outer = QVBoxLayout(self) + outer.setContentsMargins(0, 0, 0, 0) + outer.setSpacing(0) + + splitter = QSplitter(Qt.Vertical) + splitter.setChildrenCollapsible(False) + splitter.setHandleWidth(1) + outer.addWidget(splitter) + + # ----- 上半:可滚动的内容 ----- + top = QWidget() + top.setObjectName("pageContent") + top_lay = QVBoxLayout(top) + top_lay.setContentsMargins(36, 28, 36, 18) + top_lay.setSpacing(14) + + title = QLabel(self._feature.title) + title.setObjectName("pageTitle") + top_lay.addWidget(title) + + if self._feature.desc: + desc = QLabel(self._feature.desc) + desc.setObjectName("pageDesc") + desc.setWordWrap(True) + top_lay.addWidget(desc) + + if self._feature.platform_note: + note = QLabel(f"[i] {self._feature.platform_note}") + note.setStyleSheet("color: #C2410C; font-size: 12px;") + note.setWordWrap(True) + top_lay.addWidget(note) + + # 纯展示功能(info_html 非空):直接渲染信息卡片,无按钮/无日志/无 CLI + if self._feature.info_html: + info_card = self._make_info_card() + top_lay.addWidget(info_card, 1) + scroll = self._wrap_scroll(top) + splitter.addWidget(scroll) + self._log = None + splitter.setStretchFactor(0, 1) + return + + # CLI 交互式功能:显示命令行使用说明(不弹警告) + if self._feature.cli_only: + cli_card = self._make_cli_card() + top_lay.addWidget(cli_card) + top_lay.addStretch(1) + scroll = self._wrap_scroll(top) + splitter.addWidget(scroll) + # CLI 卡片页不需要运行按钮/日志区 + self._log = None + return + + if self._feature.is_placeholder: + placeholder_card = self._make_placeholder_card() + top_lay.addWidget(placeholder_card) + top_lay.addStretch(1) + scroll = self._wrap_scroll(top) + splitter.addWidget(scroll) + # 占位卡页只需要上半就够了,禁用下半 + self._log = None + return + + if self._feature.params: + form_card = self._make_card("参数") + self._form = ParamForm(self._feature.params) + self._form.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Fixed) + form_card.layout().addWidget(self._form) + top_lay.addWidget(form_card) + else: + self._form = None + + action_row = QHBoxLayout() + self._run_btn = QPushButton("运行") + self._run_btn.setObjectName("primaryButton") + self._run_btn.setCursor(Qt.PointingHandCursor) + self._run_btn.clicked.connect(self._on_run) + action_row.addWidget(self._run_btn) + + self._cancel_btn = QPushButton("停止") + self._cancel_btn.setObjectName("dangerButton") + self._cancel_btn.setEnabled(False) + self._cancel_btn.clicked.connect(self._on_cancel) + action_row.addWidget(self._cancel_btn) + + self._clear_btn = QPushButton("清空日志") + self._clear_btn.clicked.connect(self._on_clear_log) + action_row.addWidget(self._clear_btn) + action_row.addStretch(1) + top_lay.addLayout(action_row) + + scroll = self._wrap_scroll(top) + splitter.addWidget(scroll) + + # ----- 下半:日志卡片 ----- + log_card = self._make_card("运行日志") + self._log = QPlainTextEdit() + self._log.setObjectName("logView") + self._log.setReadOnly(True) + self._log.setMinimumHeight(180) + log_card.layout().addWidget(self._log) + log_wrap = QWidget() + log_wrap.setObjectName("pageContent") + log_lay = QVBoxLayout(log_wrap) + log_lay.setContentsMargins(36, 0, 36, 18) + log_lay.setSpacing(0) + log_lay.addWidget(log_card) + splitter.addWidget(log_wrap) + + # 默认高度分配:上半多、日志至少 240(一倍高度 = 360) + splitter.setStretchFactor(0, 1) + splitter.setStretchFactor(1, 0) + splitter.setSizes([420, 300]) + splitter.setCollapsible(0, False) + splitter.setCollapsible(1, False) + + def _wrap_scroll(self, inner: QWidget) -> QScrollArea: + """把 inner 包进 QScrollArea,仅垂直滚动,水平永远不出滚动条。""" + area = QScrollArea() + area.setWidgetResizable(True) + area.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) + area.setFrameShape(QFrame.NoFrame) + area.setWidget(inner) + return area + + def _make_card(self, title: str) -> QFrame: + card = QFrame() + card.setObjectName("card") + v = QVBoxLayout(card) + v.setContentsMargins(24, 18, 24, 22) + v.setSpacing(14) + lbl = QLabel(title) + lbl.setObjectName("cardTitle") + v.addWidget(lbl) + return card + + def _make_placeholder_card(self) -> QFrame: + card = QFrame() + card.setObjectName("card") + v = QVBoxLayout(card) + v.setContentsMargins(20, 18, 20, 18) + v.setSpacing(8) + lbl = QLabel("该功能尚未在本项目中提供 GUI 入口。") + lbl.setObjectName("cardTitle") + v.addWidget(lbl) + hint = QLabel( + "可能原因:\n" + " • 对应子包未安装:请使用 pip install python-office[all] 或单独安装\n" + " • office.api.<模块> 中暂无对应函数实现\n\n" + "解决方案:按提示安装依赖后重启 GUI。" + ) + hint.setStyleSheet(f"color: {TEXT_MUTED};") + hint.setWordWrap(True) + v.addWidget(hint) + return card + + def _make_info_card(self) -> QFrame: + """纯展示卡片:用 QTextBrowser 渲染 Feature.info_html,支持超链接。""" + card = QFrame() + card.setObjectName("card") + v = QVBoxLayout(card) + v.setContentsMargins(24, 20, 24, 20) + v.setSpacing(8) + + browser = QTextBrowser() + browser.setObjectName("infoBrowser") + browser.setOpenExternalLinks(True) # 让 点击后用系统浏览器打开 + browser.setHtml(self._feature.info_html) + browser.setMinimumHeight(560) + browser.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) + browser.setStyleSheet( + "QTextBrowser#infoBrowser {" + " background: transparent; border: none;" + f" color: {TEXT};" + "}" + f"QTextBrowser#infoBrowser a {{ color: {BLUE}; text-decoration: none; }}" + "QTextBrowser#infoBrowser a:hover { text-decoration: underline; }" + f"QTextBrowser#infoBrowser h2, h3 {{ color: {TEXT}; }}" + f"QTextBrowser#infoBrowser hr {{ color: {LINE}; }}" + "QTextBrowser#infoBrowser code {" + f" background: {SURFACE_ALT}; padding: 2px 6px; border-radius: 4px;" + f" color: {TEXT}; font-family: 'SF Mono', 'Cascadia Mono', Consolas, monospace;" + "}" + ) + v.addWidget(browser) + return card + + def _make_cli_card(self) -> QFrame: + """CLI 交互式卡片:提示用户在终端使用,并给出可复制的命令行示例。""" + card = QFrame() + card.setObjectName("card") + v = QVBoxLayout(card) + v.setContentsMargins(20, 18, 20, 18) + v.setSpacing(10) + + lbl = QLabel("CLI 交互式功能 · 请在终端使用") + lbl.setObjectName("cardTitle") + v.addWidget(lbl) + + hint = QLabel( + "此功能需要按命令行提示交互操作(如选择城市、确认号码等),\n" + "GUI 不适合实时交互,请在 PowerShell / CMD / 终端中运行。" + ) + hint.setStyleSheet(f"color: {TEXT_MUTED};") + hint.setWordWrap(True) + v.addWidget(hint) + + # 命令行示例(只读、可全选复制) + example = QPlainTextEdit() + example.setObjectName("cliExample") + example.setReadOnly(True) + example.setPlainText( + self._feature.cli_command + or f"python -c \"from {self._feature.callable.__module__} " + f"import {self._feature.callable.__name__}; " + f"{self._feature.callable.__name__}()\"" + ) + # 自适应高度(8 行左右),避免撑得太高 + example.setMinimumHeight(140) + example.setMaximumHeight(180) + example.setStyleSheet( + "QPlainTextEdit#cliExample {" + " background: #F8FAFC; color: #134E4A;" + " border: 1px solid rgba(13, 148, 136, 0.18); border-radius: 10px;" + " padding: 12px; font-family: 'SF Mono', 'Cascadia Mono', Consolas, monospace;" + " font-size: 12px;" + "}" + ) + v.addWidget(example) + + # 复制按钮 + copy_btn = QPushButton("复制命令到剪贴板") + copy_btn.setCursor(Qt.PointingHandCursor) + copy_btn.clicked.connect( + lambda: QApplication.clipboard().setText(example.toPlainText()) + ) + v.addWidget(copy_btn, 0, Qt.AlignRight) + + return card + + # ----- 槽 ----- + def _on_run(self): + if self._runner is not None and self._runner.isRunning(): + return + + if self._feature.is_placeholder: + QMessageBox.information( + self, "提示", + "该功能尚未实现,请先安装对应依赖。", + ) + return + + if self._feature.cli_only: + # CLI 交互式不在 GUI 里运行 —— 引导用户去终端 + cmd = self._feature.cli_command or ( + f"python -c \"from {self._feature.callable.__module__} " + f"import {self._feature.callable.__name__}; " + f"{self._feature.callable.__name__}()\"" + ) + QMessageBox.information( + self, "CLI 交互式功能", + f"此功能需要在终端命令行里按提示交互操作。\n\n" + f"请打开 PowerShell / CMD,激活 python-office 环境后执行:\n\n" + f"{cmd}", + ) + return + + kwargs = self._form.collect() if self._form else {} + + if self._log is not None: + self._log.appendPlainText( + f"▶ 开始执行:{self._feature.title}\n 参数:{kwargs}\n" + ) + self._run_btn.setEnabled(False) + self._cancel_btn.setEnabled(True) + + self._runner = make_runner(self._feature.callable, kwargs) + self._runner.log.connect(self._append_log) + self._runner.job_finished.connect(self._on_finished) + self._runner.start() + + def _on_cancel(self): + if self._runner and self._runner.isRunning(): + self._runner.terminate() + self._runner.wait(500) + self._append_log("[用户取消]") + self._on_finished(False, "✗ 已取消") + + def _on_clear_log(self): + if self._log is not None: + self._log.clear() + + def _append_log(self, text: str): + if self._log is None: + return + self._log.appendPlainText(text.rstrip()) + sb = self._log.verticalScrollBar() + sb.setValue(sb.maximum()) + + def _on_finished(self, success: bool, msg: str): + if self._log is not None: + self._log.appendPlainText(msg + "\n") + self._run_btn.setEnabled(True) + self._cancel_btn.setEnabled(False) + self._runner = None diff --git a/gui/registry.py b/gui/registry.py new file mode 100644 index 00000000..5772d9ad --- /dev/null +++ b/gui/registry.py @@ -0,0 +1,1659 @@ +# -*- coding: utf-8 -*- +"""功能注册表(schema-driven + 自动反射)。 + +设计思路: + 1. 每个 ``Category`` 持一组 ``Feature``; + 2. ``Feature`` 的可执行体 ``callable`` 直接指向 ``office.api..``, + 参数表单由 ``inspect.signature`` 自动生成; + 3. 参数名 / 默认值启发式映射为合适的 GUI 控件: + - 名字含 path / file / input / output / pdf / image → 文件选择 + - 名字含 dir / folder → 目录选择 + - bool 默认值 → 复选框 + - int / float 默认值 → SpinBox + - 其余 → 单行/多行文本 + 4. office.api 暂未提供实现的模块(如 email / ai / time / han)保留为 + "占位卡片",引导用户安装对应子包后再启用,避免空架子。 + +新增 office.api 函数后,``build_registry()`` 反射即可让 GUI 多出一个 +功能入口,无需手动改本文件。 +""" + +from __future__ import annotations + +import importlib +import inspect +from dataclasses import dataclass, field +from typing import Any, Callable, Optional + + +# -------- 数据结构 -------- + +@dataclass +class Param: + """单个参数的 UI 表单描述。""" + name: str + label: str + kind: str # 'file' | 'files' | 'dir' | 'str' | 'text' | 'int' | 'float' | 'bool' | 'password' + default: Any = None + placeholder: str = "" + required: bool = False + choices: list = field(default_factory=list) + file_filter: str = "" # e.g. "PDF files (*.pdf)" + description: str = "" # 鼠标悬停时显示的参数说明 + + def to_widget_value(self, raw: Any) -> Any: + """把表单控件的 raw value 转成函数调用期望的类型。""" + if raw is None or raw == "": + return None + if self.kind in ("int",): + try: + return int(raw) + except (TypeError, ValueError): + return None + if self.kind in ("float",): + try: + return float(raw) + except (TypeError, ValueError): + return None + if self.kind == "bool": + return bool(raw) + if self.kind in ("files",) and isinstance(raw, str): + return [p.strip() for p in raw.split(";") if p.strip()] + if self.kind in ("text",) and isinstance(raw, str): + return raw + return raw + + +@dataclass +class Feature: + """一个可执行的功能单元。""" + id: str + title: str + desc: str + callable: Callable + params: list[Param] = field(default_factory=list) + docs_url: str = "" + is_async: bool = False + is_placeholder: bool = False # 占位卡:office.api 中暂无对应函数 + platform_note: str = "" # 平台限制说明 + cli_only: bool = False # CLI 交互式:GUI 不直接执行,提示用户在终端调用 + cli_command: str = "" # 给用户的 CLI 调用示例(python -m ...) + info_html: str = "" # 纯展示内容(HTML 格式);非空时右侧只显示该卡片,无按钮/无日志 + module_path: str = "" + func_name: str = "" + param_descriptions: dict[str, str] = field(default_factory=dict) + param_overrides: dict[str, dict] = field(default_factory=dict) + resolved: bool = False + + +@dataclass +class Category: + """左侧栏一级分类。""" + id: str + title: str + icon: str + order: int + features: list[Feature] = field(default_factory=list) + + +# -------- 启发式参数映射 -------- + +# file 词根:仅当名字真正像"文件名"时才算 +_FILE_HINTS = ("file", "image", "img", "pic", "photo", "document", "word", + "pdf", "doc", "docx", "excel", "xlsx", "audio", "video", + "mp3", "mp4", "mark", "qrcode", "src", "dest", "filename") +# 目录词根:含 path / dir / folder / directory 单独出现就算 +_DIR_HINTS = ("path", "dir", "folder", "directory") +_LANG_HINTS = ("lang", "language") +_PASSWORD_HINTS = ("password", "pwd", "passwd") + + +def _looks_like_dir(n: str) -> bool: + """判定参数名更像"目录"而不是"文件"。 + + 规则: + - 名字本身等于 dir/folder/directory → dir + - 名字以 _dir / _folder / _directory 结尾 → dir + - 名字以 _path 结尾但不含 file 词根或显式后缀关键词(pdf/docx/...) → dir + - 单字 path 视为 file(避免和 fake2excel.path 这类输出文件冲突) + """ + if n in ("dir", "folder", "directory"): + return True + if n.endswith(("_dir", "_folder", "_directory")): + return True + if n.endswith("_path"): + # 含 file 词根或显式后缀关键词 → 视为文件(pdf_path / excel_path / image_path) + if "file" in n: + return False + for hint in _FILE_HINTS: + if hint in n: + return False + return True + return False + + +def _looks_like_file(n: str) -> bool: + """判定参数名更像"单个文件"(file/save 控件)。""" + if "file" in n or n == "path": + return True + for hint in _FILE_HINTS: + if hint in n: + return True + return False + + +def _is_output(n: str) -> bool: + return (n.startswith("output") or n.startswith("save_") or + n.endswith("_output") or n == "output") + + +def _param_label(name: str) -> str: + """参数名 → 中文标签。优先查 _LABEL_TRANSLATIONS,缺失则回退英文。""" + n = name.strip() + if n in _LABEL_TRANSLATIONS: + return _LABEL_TRANSLATIONS[n] + pretty = n.replace("_", " ").strip() + return " ".join(w.capitalize() for w in pretty.split()) or n + + +# 全局参数名 → 中文 label 映射(新手友好优先用中文) +_LABEL_TRANSLATIONS: dict[str, str] = { + # 通用文件 / 路径 + "input_file": "输入文件", + "output_file": "输出文件", + "input_path": "输入目录", + "output_path": "输出目录", + "dir_path": "目录", + "file_path": "文件路径", + "filepath": "文件路径", + "path": "文件路径", + "input_dir": "输入目录", + "target_dir": "搜索目录", + "file_type": "文件类型", + "suffix": "后缀名", + "output_name": "输出文件名", + "new_word_name": "新文件名", + + # 邮件 + "key": "授权码", + "msg_from": "发件人", + "msg_to": "收件人", + "msg_cc": "抄送", + "msg_subject": "主题", + "attach_files": "附件", + "host": "服务器", + "port": "端口", + "status": "状态", + + # 输出格式相关 + "output_image": "输出图片", + "output_pdf": "输出 PDF", + "output_excel": "输出 Excel", + "output_excel_name": "输出文件名", + "output_sheet_name": "合并表名", + "output": "输出文件", + "result_file": "词云图", + "mp3_name": "MP3 名称", + "mp3": "MP3 文件", + + # PDF / Word / PPT + "pdf_path": "输出 PDF", + "excel_path": "输入 Excel", + "word_path": "Word 文件", + "img_path": "图片输出目录", + "sheet_id": "工作表序号", + "worksheet_name": "工作表名", + "from_page": "起始页", + "to_page": "结束页", + "page_nums": "要删除的页码", + + # 加密 / 解密 + "password": "密码", + + # 水印 + "mark_file": "水印图片", + "mark_str": "水印内容", + "mark": "水印文字", + "text": "水印文字", + "fontname": "字体", + "fontsize": "字号", + "font_size": "字号", + "font_type": "字体", + "font_color": "字体颜色", + "color": "颜色", + "opacity": "不透明度", + "space": "水印间距", + "size": "水印大小", + "angle": "旋转角度", + "point": "位置坐标", + + # Excel + "columns": "列名", + "rows": "行数", + "language": "语言", + "column": "列号", + "sheet_name": "工作表名", + + # 图片处理 + "file": "文件", + "input_img": "输入图片", + "input_image": "输入图片", + "output_image": "输出图片", + "output_path": "输出目录", + "output_name": "输出文件名", + "quality": "压缩质量", + "qrcode_path": "二维码图片", + "filename": "文本文件", + "url": "网址", + "type": "文件类型", + "client_api": "百度 API Key", + "client_secret": "百度 Secret Key", + + # 视频 + "video_path": "视频文件", + "audio_path": "音频文件", + "content": "文本内容", + "file": "文件", + "speak": "是否朗读", + "merge": "合并为长图", + "appid": "AppID(应用 ID)", + "secret_id": "SecretId(密钥 ID)", + "secret_key": "SecretKey(密钥)", + + # OCR + "img_url": "图片 URL", + "id": "腾讯云 ID", + "key": "腾讯云 Key", + "file_name": "按文件名命名", + "trans": "是否翻译", + + # 文件管理 + "search_key": "搜索关键词", + "del_content": "要删除的内容", + "replace_content": "替换为", + "dir_rename": "同时重命名文件夹", + "file_rename": "同时重命名文件", + "prefix_content": "前缀内容", + "postfix_content": "后缀内容", + "insert_content": "插入内容", + "insert_position": "插入位置", + "add_line_dict": "行内容", + "name": "文件名关键字", + "sub": "包含子目录", + "level": "搜索深度", + "del_old_file": "删除旧文件", + + # 工具 + "to_lang": "目标语言", + "from_lang": "源语言", + "theme": "文章主题", + "line_num": "字数", + "len": "密码长度", + "len_pwd": "密码长度", + "pwd_list": "密码字符集", + + # 微信 + "who": "好友 / 群名", + "message": "消息内容", + "time": "发送时间", + "keywords": "关键词", + "txt": "消息文件名", + + # 网络 + "tile": "标题", + + # 弃用参数(保留兼容) + "out_dir": "输出目录(旧)", + "input_file_list": "PDF 列表", + "one_by_one": "PDF 列表(旧)", + "output_file_name": "输出文件名(旧)", + "pdf_file": "PDF 文件(旧)", + "file": "文件", + + # 金融 + "buy_price": "买入价", + "sale_price": "卖出价", + "shares": "股数", + "w_rate": "手续费率", + "min_rate": "最低收费", + "stamp_tax": "印花税率", +} + + +def _looks_like_str_only(n: str) -> bool: + """参数名更像"纯文本输入"(用户输入字符串,不是文件路径)。 + + 典型场景:合并后的新文件名、主题、关键词、密码等。 + """ + if n in ("name", "text", "theme", "lang", "language", "title", "tile"): + return True + if n.endswith(("_name", "_text", "_theme", "_title", "_lang")): + return True + return False + + +def _resolve_annotation_kind(annotation: Any) -> str | None: + """从函数参数注解推断简单控件 kind。 + + 注意:``annotation`` 可能是类型本身(``float``)也可能是字符串 + (``"float"``),两种情况都要处理。 + """ + if annotation is inspect.Parameter.empty: + return None + # 直接类型 + if annotation is bool: + return "bool" + if annotation is int: + return "int" + if annotation is float: + return "float" + if annotation is str: + return "str" + # 字符串形式(含 "typing.List[str]" 等) + name = getattr(annotation, "__name__", None) + if name is None: + # typing 形式(List[str] 等) + s = str(annotation).lower() + if "list[" in s or s.startswith("list"): + return "list" + if s in ("int", "builtins.int"): + return "int" + if s in ("float", "builtins.float"): + return "float" + if s in ("bool", "builtins.bool"): + return "bool" + if s in ("str", "builtins.str"): + return "str" + return None + name_lower = name.lower() + return { + "bool": "bool", + "int": "int", + "float": "float", + "str": "str", + "list": "list", + }.get(name_lower) + + +def _infer_param_kind(name: str, default: Any, annotation: Any) -> tuple[str, str]: + """根据参数名/默认值/类型注解推断 UI 控件种类及文件过滤器。 + + 优先级: + 1. 密码字段 → password + 2. list[...] 类型注解 → files / text + 3. 看起来像"纯文本输入"(name / theme / text / ...)→ str + 4. 看起来像目录(path/dir/folder/directory) → dir + 5. 看起来像文件(file/image/pdf/docx/...) → file 或 save(按 output 前缀) + 6. 其它:按 annotation / default 推断 bool/int/float + """ + n = name.lower() + annotation_str = str(annotation).lower() if annotation is not inspect.Parameter.empty else "" + + if any(h in n for h in _PASSWORD_HINTS): + return "password", "" + + if "list[" in annotation_str or annotation_str.startswith("list"): + if _looks_like_file(n) or _looks_like_dir(n): + return "files", "" + return "text", "" + + # 纯文本类判定优先于文件/目录类:避免 new_word_name / theme / lang 等 + # 含 word/document 等后缀关键词时被误判为 file/save + if _looks_like_str_only(n): + return "str", "" + + # 目录类判定优先于文件类:避免 input_path 被 "path" 误识别为 file + if _looks_like_dir(n): + return "dir", "" + + if _looks_like_file(n): + suffix = _suffix_for_filename(n) + kind = "save" if _is_output(n) else "file" + return kind, suffix + + # 类型注解优先(直接用 ``is`` 比较类型本身) + anno_kind = _resolve_annotation_kind(annotation) + if anno_kind == "list": + return "text", "" + if anno_kind in ("bool", "int", "float"): + return anno_kind, "" + + # 默认值类型 + if isinstance(default, bool): + return "bool", "" + if isinstance(default, int): + return "int", "" + if isinstance(default, float): + return "float", "" + + return "str", "" + + +def _suffix_for_filename(n: str) -> str: + """根据参数名推断合适的文件扩展名过滤器。""" + if n.endswith("pdf") or "_pdf" in n or "pdf_" in n: + return "PDF files (*.pdf)" + if "image" in n or "img" in n or "pic" in n: + return "Images (*.png *.jpg *.jpeg *.bmp *.gif)" + if "excel" in n or n.endswith("xlsx") or "xlsx" in n: + return "Excel files (*.xlsx *.xls *.csv)" + if "doc" in n: + return "Word files (*.doc *.docx)" + if "ppt" in n: + return "PowerPoint files (*.ppt *.pptx)" + if "audio" in n or "mp3" in n: + return "Audio files (*.mp3 *.wav *.m4a *.flac)" + if "video" in n or "mp4" in n: + return "Video files (*.mp4 *.avi *.mov *.mkv)" + if "txt" in n: + return "Text files (*.txt *.md)" + return "All files (*.*)" + + +def _params_from_signature(func: Callable) -> list[Param]: + """从函数签名生成参数列表(自动跳过 **kwargs)。""" + try: + sig = inspect.signature(func) + except (TypeError, ValueError): + return [] + + params: list[Param] = [] + for p in sig.parameters.values(): + if p.kind in (inspect.Parameter.VAR_POSITIONAL, + inspect.Parameter.VAR_KEYWORD): + continue + kind, file_filter = _infer_param_kind(p.name, p.default, p.annotation) + default = None if p.default is inspect.Parameter.empty else p.default + params.append(Param( + name=p.name, + label=_param_label(p.name), + kind=kind, + default=default, + placeholder=str(default) if default not in (None, "") else "", + required=(p.default is inspect.Parameter.empty), + file_filter=file_filter, + )) + return params + + +# 手动给个别函数附加 placeholder / 默认值 / file_filter,弥补反射的不足 +_PARAM_OVERRIDES: dict[tuple[str, str], dict[str, dict]] = { + ("office.api.pdf", "pdf2docx"): { + "output_file": { + "placeholder": "留空则输出到 <输入文件同目录>/<同名>.docx", + "file_filter": "Word documents (*.docx)", + }, + }, +} + + +def _apply_param_overrides(module_path: str, func_name: str, + params: list[Param]) -> list[Param]: + """应用手动 placeholder / 默认值补丁。""" + overrides = _PARAM_OVERRIDES.get((module_path, func_name)) + if not overrides: + return params + for p in params: + ov = overrides.get(p.name) + if ov: + for k, v in ov.items(): + setattr(p, k, v) + return params + + +def _try_import(module_path: str): + """安全 import 子模块,失败返回 None。""" + try: + return importlib.import_module(module_path) + except Exception: + return None + + +def _lazy_callable(*args, **kwargs): + raise RuntimeError("功能尚未加载,请重新打开该功能页后再试。") + + +def _resolve_params(func: Callable, + module_path: str, + func_name: str, + param_descriptions: dict[str, str] | None = None, + param_overrides: dict[str, dict] | None = None) -> list[Param]: + params = _params_from_signature(func) + params = _apply_param_overrides(module_path, func_name, params) + if param_overrides: + for p in params: + ov = param_overrides.get(p.name) + if ov: + for k, v in ov.items(): + setattr(p, k, v) + if param_descriptions: + for p in params: + if p.name in param_descriptions: + p.description = param_descriptions[p.name] + return params + + +def resolve_feature(feature: Feature) -> Feature: + """Import and inspect a feature only when its page is first opened.""" + if feature.resolved: + return feature + if feature.cli_only or feature.info_html or feature.is_placeholder: + feature.resolved = True + return feature + + mod = _try_import(feature.module_path) + func = getattr(mod, feature.func_name, None) if mod else None + if callable(func): + feature.callable = func + feature.params = _resolve_params( + func, + feature.module_path, + feature.func_name, + feature.param_descriptions, + feature.param_overrides, + ) + feature.is_placeholder = False + else: + feature.callable = lambda: None + feature.params = [] + feature.is_placeholder = True + if not feature.platform_note: + feature.platform_note = "office.api 中暂时无法加载对应实现。请检查依赖是否完整。" + feature.resolved = True + return feature + + +def _build_feature(feature_id: str, title: str, desc: str, + module_path: str, func_name: str, + docs_url: str = "", platform_note: str = "", + param_descriptions: dict[str, str] = None, + param_overrides: dict[str, dict] = None, + is_placeholder: bool = False, + cli_only: bool = False, + cli_command: str = "", + info_html: str = "") -> Feature: + """从一个 office.api.. 函数构造 Feature;找不到则降级为占位。 + + Args: + param_descriptions: ``{参数名: 说明文本}``,会作为 tooltip 提示用户 + 这个参数是干嘛的。优先级:函数签名 docstring > _PARAM_OVERRIDES > + 此处传入的 param_descriptions。 + param_overrides: ``{参数名: {字段: 值}}``,可覆盖 ``kind`` / ``file_filter`` / + ``placeholder`` / ``default`` / ``description``。用于修正反射推断错误的 + 控件类型(例如 ``pdf_path`` 应为 save 而不是 dir)。 + is_placeholder: True=强制标为占位卡(即使底层函数存在),用于 + CLI 交互式入口(GUI 中无意义)等场景。 + cli_only: True=标记为 CLI 交互式(GUI 不直接执行)。区别于 is_placeholder: + cli_only 不会弹"未实现"警告,而是显示"在命令行怎么调"的说明。 + cli_command: 给用户的 CLI 调用示例(多行字符串)。仅 cli_only=True 时有效。 + info_html: 纯展示内容(HTML 格式)。非空时右侧只显示该卡片,无按钮 / 无日志, + 适用于"项目信息"这种无副作用的纯展示功能。 + """ + if cli_only: + return Feature( + id=feature_id, title=title, desc=desc, + callable=lambda: None, + params=[], docs_url=docs_url, + platform_note=platform_note, + cli_only=True, + cli_command=cli_command, + info_html=info_html, + module_path=module_path, + func_name=func_name, + resolved=True, + ) + + if not is_placeholder: + return Feature( + id=feature_id, title=title, desc=desc, + callable=_lazy_callable, params=[], docs_url=docs_url, + platform_note=platform_note, + cli_only=cli_only, + cli_command=cli_command, + info_html=info_html, + module_path=module_path, + func_name=func_name, + param_descriptions=param_descriptions or {}, + param_overrides=param_overrides or {}, + resolved=False, + ) + + return Feature( + id=feature_id, title=title, desc=desc, + callable=lambda: None, + params=[], docs_url=docs_url, + is_placeholder=True, + platform_note=platform_note or "office.api 中暂无对应实现。请先安装对应 PyPI 子包(如 pip install python-office[all])。", + info_html=info_html, + module_path=module_path, + func_name=func_name, + param_descriptions=param_descriptions or {}, + param_overrides=param_overrides or {}, + resolved=True, + ) + + +# -------- 类别定义 -------- + +def _cat(id_: str, title: str, icon: str, order: int) -> Category: + return Category(id=id_, title=title, icon=icon, order=order) + + +def build_registry() -> list[Category]: + """构造全量功能注册表。每次启动 GUI 都重新构造,开销可忽略。""" + cats: list[Category] = [] + + # --- PDF(按官方文档 https://www.python-office.com/modules/pdf/api 的 13 个函数)--- + c = _cat("pdf", "PDF 处理", "📕", 10) + c.features = [ + _build_feature( + "pdf2docx", "PDF 转 Word", "把 PDF 文件转为 .docx 文档。", + "office.api.pdf", "pdf2docx", + "https://www.python4office.cn/python-office/popdf/1-pdf2docx/", + param_descriptions={ + "input_file": "要转换的 PDF 文件完整路径(含 .pdf 后缀)。", + "output_file": "输出 .docx 文件路径;留空时自动派生为 <输入同目录>/<同名>.docx。", + "input_path": "输入 PDF 所在目录(兼容风格:与 output_path 配对使用)。", + "output_path": "输出 .docx 保存目录(兼容风格:与 input_path 配对使用)。", + }, + ), + _build_feature("pdf2imgs", "PDF 转图片", "把 PDF 每页导出为一张图片。", + "office.api.pdf", "pdf2imgs", + "https://www.python4office.cn/python-office/popdf/2-pdf2imgs/", + param_descriptions={ + "input_file": "源 PDF 文件。", + "output_file": "输出图片路径;merge=True 时是单张长图文件路径(如 ./long.png),merge=False 时是输出目录。", + "merge": "True=所有页拼成一张长图;False=每页一张图。", + "pdf_path": "[已弃用] 请改用 input_file。", + "out_dir": "[已弃用] 请改用 output_file。", + }), + _build_feature("txt2pdf", "文本转 PDF", "把 .txt 文本导出为 PDF。", + "office.api.pdf", "txt2pdf", + param_descriptions={ + "input_file": "要转换的 .txt 文本文件。", + "output_file": "生成的 PDF 文件路径。", + }), + _build_feature("split4pdf", "PDF 拆分", "按页码范围拆分 PDF。", + "office.api.pdf", "split4pdf", + param_descriptions={ + "input_file": "要拆分的 PDF 文件。", + "output_file": "拆分后的输出 PDF 文件路径。", + "from_page": "起始页码(1 起,-1 表示首页)。", + "to_page": "结束页码(-1 表示末页)。", + }), + _build_feature("merge2pdf", "PDF 合并", "把多个 PDF 合并成一个。", + "office.api.pdf", "merge2pdf", + param_descriptions={ + "input_file_list": "要合并的 PDF 文件路径列表,顺序即合并顺序。", + "output_file": "合并后的 PDF 文件路径。", + "one_by_one": "[已弃用] 请改用 input_file_list。", + "output": "[已弃用] 请改用 output_file。", + }), + _build_feature("encrypt4pdf", "PDF 加密", "为 PDF 设置打开密码。", + "office.api.pdf", "encrypt4pdf", + param_descriptions={ + "password": "PDF 打开密码,建议 12 位以上。", + "input_file": "要加密的 PDF 文件。", + "output_file": "加密后的输出 PDF 路径。", + "input_path": "[已弃用] 请改用 input_file。", + "output_path": "[已弃用] 请改用 output_file。", + }), + _build_feature("decrypt4pdf", "PDF 解密", "用已知密码移除 PDF 保护。", + "office.api.pdf", "decrypt4pdf", + param_descriptions={ + "password": "已知的 PDF 密码。", + "input_file": "要解密的加密 PDF 文件。", + "output_file": "解密后的输出 PDF 路径。", + "input_path": "[已弃用] 请改用 input_file。", + "output_path": "[已弃用] 请改用 output_file。", + }), + _build_feature("add_text_watermark", "PDF 加文字水印", "在 PDF 上叠加文字水印。", + "office.api.pdf", "add_text_watermark", + param_descriptions={ + "input_file": "源 PDF 文件。", + "text": "水印文字内容。", + "output_file": "加水印后的输出 PDF 路径。", + "point": "水印位置坐标 (x, y);空则使用默认位置。", + "fontname": "字体名称,默认 Helvetica。", + "fontsize": "字号,默认 20。", + "color": "RGB 颜色三元组,每个分量 0~1。默认 (0, 0, 1) 蓝色。", + }), + _build_feature("add_img_water", "PDF 加图片水印", "用图片给 PDF 加水印。", + "office.api.pdf", "add_img_water", + "https://www.python-office.com/modules/pdf/api#add_img_water", + param_descriptions={ + "input_file": "源 PDF 文件。", + "mark_file": "作为水印的图片文件(建议 PNG / JPG)。", + "output_file": "加水印后的输出 PDF 路径。", + }), + _build_feature("add_mark", "PDF 加水印(旧版)", "旧版兼容入口,推荐 add_watermark_by_parameters。", + "office.api.pdf", "add_mark", + param_overrides={ + "mark_str": {"kind": "str"}, + }, + param_descriptions={ + "input_file": "源 PDF 文件。", + "mark_str": "水印文字内容。", + "output_path": "输出目录,文件名前缀。", + "output_file": "输出文件名。", + "pdf_file": "[已弃用] 请改用 input_file。", + "output_file_name": "[已弃用] 请改用 output_file。", + }), + _build_feature("add_watermark_by_parameters", "PDF 加水印(参数化)", "参数化水印接口(推荐)。", + "office.api.pdf", "add_watermark_by_parameters", + "https://www.python-office.com/modules/pdf/api#add_watermark_by_parameters", + param_overrides={ + "mark_str": {"kind": "str"}, + }, + param_descriptions={ + "input_file": "源 PDF 文件。", + "mark_str": "水印文字内容。", + "output_path": "输出目录。", + "output_file": "输出文件名。", + "pdf_file": "[已弃用] 请改用 input_file。", + "output_file_name": "[已弃用] 请改用 output_file。", + }), + _build_feature("del4pdf", "删除 PDF 页", "按页码列表删除 PDF 页面。", + "office.api.pdf", "del4pdf", + param_descriptions={ + "input_file": "源 PDF 文件。", + "output_file": "删除页后的输出 PDF 路径。", + "page_nums": "要删除的页码列表(1 起),多个用逗号或分号分隔,如 1,3,5。", + }), + _build_feature("pdf_add_watermark_interactive", "交互式水印", "命令行交互式水印(GUI 中可忽略此入口)。", + "office.api.pdf", "add_watermark", + "https://www.python-office.com/modules/pdf/api#add_watermark"), + ] + cats.append(c) + + # --- Excel(按官方文档 https://www.python-office.com/modules/excel/api 的 7 个函数)--- + c = _cat("excel", "Excel 处理", "📗", 20) + c.features = [ + _build_feature("fake2excel", "生成模拟 Excel", "用 Faker 库生成测试数据。", + "office.api.excel", "fake2excel", + param_overrides={ + "path": { + "kind": "save", + "file_filter": "Excel files (*.xlsx)", + }, + }, + param_descriptions={ + "columns": "列名列表。可用字段:name, phone, email, address, company, job, country, city, postcode, ssn, credit_card_number, user_agent, text, sentence。多个用逗号分隔。", + "rows": "要生成的数据行数。", + "path": "输出 Excel 文件路径(另存为对话框,默认 .xlsx)。", + "language": "数据语言:'zh_CN' 中文 / 'english' 英文。", + }), + _build_feature("merge2excel", "合并多个 Excel", "把目录下多个 Excel 合并成一个文件的不同 sheet。", + "office.api.excel", "merge2excel", + param_descriptions={ + "dir_path": "包含多个 Excel 文件的目录路径。", + "output_file": "合并后的 Excel 文件路径。", + }), + _build_feature("sheet2excel", "按 sheet 拆分", "把一个 Excel 的多个 sheet 拆成多个文件。", + "office.api.excel", "sheet2excel", + param_descriptions={ + "file_path": "要拆分的 Excel 文件路径。", + "output_path": "拆分后文件的输出目录。", + }), + _build_feature("merge2sheet", "多 Excel 多 sheet 合并", "跨文件、跨 sheet 自动合并。", + "office.api.excel", "merge2sheet", + param_descriptions={ + "dir_path": "包含多个 Excel 文件的目录路径。", + "output_sheet_name": "合并后的 sheet 名称。", + "output_excel_name": "合并后的 Excel 文件名(不含 .xlsx 后缀)。", + }), + _build_feature("find_excel_data", "搜索 Excel 内容", "在指定目录下搜索单元格内容。", + "office.api.excel", "find_excel_data", + param_descriptions={ + "search_key": "要搜索的关键词。", + "target_dir": "搜索的目录路径。", + }), + _build_feature("split_excel_by_column", "按列拆分 Excel", "按指定列的不同值拆分工作表。", + "office.api.excel", "split_excel_by_column", + param_descriptions={ + "filepath": "要拆分的 Excel 文件路径。", + "column": "按哪一列的内容进行拆分(1 起)。", + "worksheet_name": "要处理的工作表名称,留空则用第一个工作表。", + }), + _build_feature("excel2pdf", "Excel 转 PDF", "把指定 sheet 导出为 PDF。", + "office.api.excel", "excel2pdf", + param_overrides={ + # pdf_path 实际是输出文件,但名字以 _path 结尾会被推断为 dir + # 这里显式覆盖为 save 模式(另存为对话框) + "pdf_path": { + "kind": "save", + "file_filter": "PDF files (*.pdf)", + }, + }, + param_descriptions={ + "excel_path": "源 Excel 文件路径。", + "pdf_path": "输出 PDF 文件路径(另存为对话框)。", + "sheet_id": "工作表索引(0 起,0 表示第一个 sheet)。", + }), + _build_feature("excel2markdown", "Excel 转 Markdown", "把 Excel 表格转 Markdown 文档(HTML 表格,支持 colspan/rowspan,保留合并单元格原貌)。", + "office.api.markdown", "excel2markdown", + param_overrides={ + "input_file": { + "kind": "file", + "file_filter": "Excel files (*.xlsx *.xls)", + }, + "output_file": { + "kind": "save", + "file_filter": "Markdown files (*.md)", + }, + }, + param_descriptions={ + "input_file": "要转换的 Excel 文件(.xlsx / .xls)。", + "output_file": "输出的 Markdown 文件(另存为对话框,默认 ./excel2markdown.md)。", + "sheet_name": "要转换的工作表名,留空则转换所有工作表。", + }), + ] + cats.append(c) + + # --- Word (官方文档 https://www.python-office.com/modules/word/api 的 5 个函数)--- + c = _cat("word", "Word 处理", "📘", 30) + c.features = [ + _build_feature("docx2pdf", "Word 转 PDF", "Word 转 PDF,支持单个文件或整个文件夹批量。", + "office.api.word", "docx2pdf", + platform_note="依赖 Microsoft Word / WPS / LibreOffice,桌面环境可用", + param_overrides={ + # path 既能传文件也能传目录,kind 留 file 让用户选文件;如选目录会报错但更直观 + "path": {"file_filter": "Word files (*.docx *.doc)"}, + }, + param_descriptions={ + "path": "Word 文件路径,或包含多个 Word 文件的目录路径。传目录时批量转换。", + "output_path": "PDF 输出目录;不存在会自动创建。留空则输出到 path 所在目录。", + }), + _build_feature("merge4docx", "合并 Word", "把多个 .docx 合并成一个文件。", + "office.api.word", "merge4docx", + platform_note="依赖 Microsoft Word / WPS / LibreOffice", + param_descriptions={ + "input_path": "包含多个 .docx 的目录路径。", + "output_path": "合并后文件保存目录。", + "new_word_name": "合并后新文件的名字(不含 .docx 后缀)。", + }), + _build_feature("doc2docx", "doc 转 docx", "把旧版 .doc 转为 .docx。", + "office.api.word", "doc2docx", + platform_note="依赖 Microsoft Word / WPS / LibreOffice", + param_overrides={ + "input_path": { + "kind": "file", + "file_filter": "Word 97-2003 (*.doc)", + }, + }, + param_descriptions={ + "input_path": "要转换的 .doc 文件路径。", + "output_path": "生成的 .docx 保存目录(默认 ./)。", + "output_name": "输出文件名(不含后缀),留空则与原文件同名。", + }), + _build_feature("docx2doc", "docx 转 doc", "把 .docx 转回旧版 .doc。", + "office.api.word", "docx2doc", + platform_note="依赖 Microsoft Word / WPS / LibreOffice", + param_overrides={ + "input_path": { + "kind": "file", + "file_filter": "Word 文档 (*.docx)", + }, + }, + param_descriptions={ + "input_path": "要转换的 .docx 文件路径。", + "output_path": "生成的 .doc 保存目录(默认 ./)。", + "output_name": "输出文件名(不含后缀),留空则与原文件同名。", + }), + _build_feature("docx4imgs", "Word 提取图片", "从 Word 文档中提取所有图片。", + "office.api.word", "docx4imgs", + platform_note="依赖 python-docx,不依赖 Microsoft Word", + param_overrides={ + "word_path": { + "kind": "file", + "file_filter": "Word 文档 (*.docx)", + }, + "img_path": { + "kind": "dir", + }, + }, + param_descriptions={ + "word_path": "要提取图片的 .docx 文件路径。", + "img_path": "图片输出根目录;会自动按 Word 文件名生成子目录。", + }), + ] + cats.append(c) + + # --- PPT(按官方文档 https://www.python-office.com/modules/ppt/api 的 3 个函数)--- + c = _cat("ppt", "PPT 处理", "📙", 40) + c.features = [ + _build_feature("ppt2pdf", "PPT 转 PDF", "把 .pptx 转成 PDF。", + "office.api.ppt", "ppt2pdf", + platform_note="依赖 Microsoft PowerPoint / WPS / LibreOffice", + param_overrides={ + "path": { + "kind": "file", + "file_filter": "PowerPoint files (*.pptx *.ppt)", + }, + }, + param_descriptions={ + "path": "输入的 .pptx / .ppt 文件路径。", + "output_path": "PDF 保存目录。", + }), + _build_feature("ppt2img", "PPT 转图片", "把幻灯片导出为图片,可合并为长图。", + "office.api.ppt", "ppt2img", + platform_note="依赖 Microsoft PowerPoint / WPS / LibreOffice", + param_overrides={ + "input_path": { + "kind": "file", + "label": "输入文件", + "file_filter": "PowerPoint files (*.pptx *.ppt)", + }, + }, + param_descriptions={ + "input_path": "输入的 .pptx 文件路径;也可传目录,批量转换目录下所有 PPT。", + "output_path": "图片输出目录(merge=False)或单张长图文件路径(merge=True)。", + "merge": "True=把所有幻灯片拼成一张长图,False=每页一张图。", + }), + _build_feature("merge4ppt", "合并 PPT", "把多个 .pptx 合并成一个文件。", + "office.api.ppt", "merge4ppt", + platform_note="依赖 Microsoft PowerPoint / WPS / LibreOffice", + param_descriptions={ + "input_path": "包含多个 .pptx / .ppt 的目录。", + "output_path": "合并后文件保存目录。", + "output_name": "合并后文件名(含 .pptx 后缀,默认 merge4ppt.pptx)。", + }), + ] + cats.append(c) + + # --- 图片(按官方文档 https://www.python-office.com/modules/image/api 的 9 个函数)--- + c = _cat("image", "图片处理", "🖼️", 50) + c.features = [ + _build_feature("compress_image", "压缩图片", "按质量参数压缩图片,减小体积。", + "office.api.image", "compress_image", + param_overrides={ + "input_file": {"file_filter": "Images (*.png *.jpg *.jpeg *.bmp *.gif)"}, + "output_file": {"kind": "save", "file_filter": "Images (*.png *.jpg *.jpeg *.bmp *.gif)"}, + }, + param_descriptions={ + "input_file": "要压缩的输入图片文件。", + "output_file": "压缩后的图片保存路径(另存为对话框)。", + "quality": "压缩质量 0~95,越大越清晰、文件越大;推荐 70~85。", + }), + _build_feature("image2gif", "图片转 GIF", "将图片转为 GIF(交互式入口,GUI 中可忽略)。", + "office.api.image", "image2gif", + is_placeholder=True, + platform_note="CLI 交互式入口"), + _build_feature("add_watermark", "图片加水印", "为图片添加文字水印。", + "office.api.image", "add_watermark", + param_overrides={ + "mark": {"kind": "str"}, + "file": {"file_filter": "Images (*.png *.jpg *.jpeg *.bmp *.gif)"}, + }, + param_descriptions={ + "file": "要加水印的图片文件。", + "mark": "水印文字内容(如 @python-office)。", + "output_path": "输出目录。", + "color": "水印颜色,十六进制如 #eaeaea。", + "size": "水印字号大小。", + "opacity": "不透明度,0.01~1 之间。", + "space": "水印之间的间距(像素)。", + "angle": "旋转角度(如 30 表示倾斜 30 度)。", + }), + _build_feature("del_watermark", "图片去水印", "尝试移除图片中的水印。", + "office.api.image", "del_watermark", + param_overrides={ + "input_image": {"file_filter": "Images (*.png *.jpg *.jpeg *.bmp *.gif)"}, + "output_image": {"kind": "save", "file_filter": "Images (*.png *.jpg *.jpeg *.bmp *.gif)"}, + }, + param_descriptions={ + "input_image": "含水印的图片文件。", + "output_image": "去水印后保存的文件(另存为对话框)。", + }), + _build_feature("img2Cartoon", "图片转漫画", "调用百度 AI 把图片转为卡通风格。", + "office.api.image", "img2Cartoon", + param_overrides={ + "path": {"file_filter": "Images (*.png *.jpg *.jpeg *.bmp *.gif)"}, + }, + param_descriptions={ + "path": "输入图片文件。", + "client_api": "百度 AI 应用的 API Key(留空使用内置 Key)。", + "client_secret": "百度 AI 应用的 Secret Key(留空使用内置 Key)。", + }), + _build_feature("down4img", "下载网络图片", "通过 URL 下载图片到本地。", + "office.api.image", "down4img", + param_descriptions={ + "url": "图片的网络地址(http/https)。", + "output_path": "保存目录(默认当前目录)。", + "output_name": "保存的文件名前缀(不含后缀)。", + "type": "图片格式,如 jpg / png。", + }), + _build_feature("txt2wordcloud", "生成词云", "从文本生成词云图片。", + "office.api.image", "txt2wordcloud", + param_overrides={ + "result_file": { + "kind": "save", + "file_filter": "Images (*.png *.jpg *.jpeg *.bmp *.gif)", + }, + "filename": {"file_filter": "Text files (*.txt *.md)"}, + }, + param_descriptions={ + "filename": "输入的 .txt 文本文件路径。", + "color": "词云背景色,如 white / black / 十六进制。", + "result_file": "输出的词云图片(另存为对话框)。", + }), + _build_feature("pencil4img", "铅笔画效果", "把图片转成铅笔素描风格。", + "office.api.image", "pencil4img", + param_overrides={ + "input_img": {"file_filter": "Images (*.png *.jpg *.jpeg *.bmp *.gif)"}, + }, + param_descriptions={ + "input_img": "输入图片文件。", + "output_path": "输出目录。", + "output_name": "输出文件名(含后缀,默认 pencil4img.jpg)。", + }), + _build_feature("decode_qrcode", "解码二维码", "识别图片中的二维码内容。", + "office.api.image", "decode_qrcode", + param_overrides={ + "qrcode_path": { + "kind": "file", + "file_filter": "Images (*.png *.jpg *.jpeg *.bmp *.gif)", + }, + }, + param_descriptions={ + "qrcode_path": "二维码图片文件路径。", + }), + ] + cats.append(c) + + # --- 文件(按官方文档 https://www.python-office.com/modules/file/api 的 9 个函数)--- + c = _cat("file", "文件管理", "📁", 60) + c.features = [ + _build_feature("replace4filename", "批量重命名", "按关键字批量替换文件名 / 文件夹名。", + "office.api.file", "replace4filename", + param_overrides={ + "path": {"kind": "dir"}, + "file_rename": {"kind": "bool"}, + }, + param_descriptions={ + "path": "要批量重命名的根目录(该目录本身不会被改)。", + "del_content": "文件名中要删除 / 替换的内容。", + "replace_content": "替换成的新内容,留空则等于删除。", + "dir_rename": "是否同时修改子文件夹名。", + "file_rename": "是否同时修改文件名。", + "suffix": "只处理特定后缀的文件,如 .txt;留空处理所有。", + }), + _build_feature("file_name_insert_content", "文件名中间插入", "在文件名中间插入字符串。", + "office.api.file", "file_name_insert_content", + param_overrides={ + "insert_position": {"kind": "int"}, + }, + param_descriptions={ + "file_path": "文件路径。", + "insert_position": "插入位置(1 起),如 3 表示在第 3 个字符后插入。", + "insert_content": "要插入的字符串。", + }), + _build_feature("file_name_add_prefix", "文件加前缀", "批量给文件名前加前缀。", + "office.api.file", "file_name_add_prefix", + param_descriptions={ + "file_path": "文件路径。", + "prefix_content": "要添加的前缀字符串。", + }), + _build_feature("file_name_add_postfix", "文件加后缀", "批量给文件名后加后缀。", + "office.api.file", "file_name_add_postfix", + param_descriptions={ + "file_path": "文件路径。", + "postfix_content": "要添加的后缀字符串。", + }), + _build_feature("output_file_list_to_excel", "文件名导出 Excel", "把目录下的文件名清单写入 Excel。", + "office.api.file", "output_file_list_to_excel", + param_descriptions={ + "dir_path": "要导出的目录。", + }), + _build_feature("search_specify_type_file", "按类型搜索文件", "按扩展名搜索文件。", + "office.api.file", "search_specify_type_file", + param_overrides={ + "file_path": {"kind": "dir"}, + "file_type": {"kind": "str"}, + }, + param_descriptions={ + "file_path": "搜索的目录。", + "file_type": "要搜索的扩展名,如 .pdf / .docx(必须带点)。", + }), + _build_feature("get_files", "获取文件列表", "返回目录下符合条件的文件路径列表。", + "office.api.file", "get_files", + param_overrides={ + "path": {"kind": "dir"}, + }, + param_descriptions={ + "path": "搜索的目录。", + "name": "文件名关键字(留空匹配所有)。", + "suffix": "文件后缀,如 .pdf(留空匹配所有)。", + "sub": "True=递归搜索子目录。", + "level": "递归深度,0 表示无限。", + }), + _build_feature("add_line_by_type", "按类型插入行", "向指定后缀的文件批量插入行。", + "office.api.file", "add_line_by_type", + param_overrides={ + "add_line_dict": {"kind": "text"}, + "file_type": {"kind": "str"}, + }, + param_descriptions={ + "add_line_dict": "要插入的内容,格式如 {'import os': ['a.py', 'b.py']}。多行文本框输入 JSON。", + "file_path": "目标目录。", + "file_type": "要处理的文件后缀(如 .py)。", + "output_path": "新文件输出目录。", + }), + _build_feature("group_by_name", "按名称分组", "把目录下的文件按名称分组整理到子目录。", + "office.api.file", "group_by_name", + param_overrides={ + "path": {"kind": "dir"}, + "del_old_file": {"kind": "bool"}, + }, + param_descriptions={ + "path": "源目录。", + "output_path": "分组后的输出目录,留空则在 path 同级创建 group_by_name 子目录。", + "del_old_file": "是否删除原文件。", + }), + ] + cats.append(c) + + # --- 视频(按官方文档 https://www.python-office.com/modules/video/api 的 4 个函数)--- + c = _cat("video", "视频处理", "🎬", 70) + c.features = [ + _build_feature("video2mp3", "视频提取音频", "从视频中提取音频为 MP3。", + "office.api.video", "video2mp3", + param_overrides={ + "path": { + "kind": "file", + "file_filter": "Video files (*.mp4 *.avi *.mov *.mkv *.flv)", + }, + }, + param_descriptions={ + "path": "输入视频文件(mp4 / avi / mov / mkv 等)。", + "mp3_name": "MP3 文件名(不含后缀),留空则用原视频文件名。", + "output_path": "输出目录。", + }), + _build_feature("audio2txt", "音频转文字", "调用腾讯云语音识别把音频转为文字。", + "office.api.video", "audio2txt", + platform_note="需要腾讯云 appid / SecretId / SecretKey;本地音频 ≤ 5MB", + param_overrides={ + "audio_path": {"file_filter": "Audio files (*.mp3 *.wav *.m4a *.flac)"}, + }, + param_descriptions={ + "audio_path": "输入的音频文件。", + "appid": "腾讯云语音识别应用的 appid。", + "secret_id": "腾讯云 API SecretId。", + "secret_key": "腾讯云 API SecretKey。", + }), + _build_feature("mark2video", "视频加文字水印", "在视频上叠加滚动文字水印。", + "office.api.video", "mark2video", + param_overrides={ + "mark_str": {"kind": "str"}, + }, + param_descriptions={ + "video_path": "输入视频文件。", + "output_path": "输出目录。", + "output_name": "输出文件名(**记得带 .mp4 后缀**,默认 mark2video.mp4)。", + "mark_str": "水印文字内容。", + "font_size": "水印字号(默认 28)。", + "font_type": "字体名称或字体文件路径(默认 Arial)。", + "font_color": "字体颜色(默认 white)。", + }), + _build_feature("txt2mp3", "文本转语音", "调用本地 TTS 引擎把文本合成 MP3。", + "office.api.video", "txt2mp3", + param_overrides={ + "mp3": { + "kind": "save", + "file_filter": "Audio files (*.mp3 *.wav *.m4a *.flac)", + }, + "file": { + "file_filter": "Text files (*.txt *.md)", + }, + }, + param_descriptions={ + "content": "要朗读的文本内容(默认 '程序员晚枫')。", + "file": "可选:从指定文本文件读取(优先级最高)。", + "mp3": "输出的 MP3 文件(另存为对话框)。", + "speak": "True=边合成边朗读,False=只生成文件。", + }), + ] + cats.append(c) + + # --- 邮件(按官方文档 https://www.python-office.com/modules/email/api 的 2 个函数)--- + c = _cat("email", "邮件收发", "📧", 80) + c.features = [ + _build_feature("send_email", "发送邮件", "通过 SMTP 发送邮件,支持附件 / 抄送。", + "office.api.email", "send_email", + param_overrides={ + "key": {"label": "邮箱授权码"}, + "host": { + "kind": "choice", + "choices": ["smtp.qq.com", "smtp.163.com", "smtp.gmail.com"], + }, + }, + param_descriptions={ + "key": "邮箱授权码(不是登录密码)。QQ 邮箱在 设置→账户→POP3/IMAP 服务 生成。", + "msg_from": "发件人邮箱地址。", + "msg_to": "收件人邮箱地址。", + "msg_cc": "抄送地址(多个用英文逗号分隔),留空则不抄送。", + "attach_files": "附件文件路径列表(用分号 ; 分隔多个路径),留空则无附件。", + "msg_subject": "邮件主题。", + "content": "邮件正文。", + "host": "SMTP 服务器地址:QQ 选 smtp.qq.com / 163 选 smtp.163.com / Gmail 选 smtp.gmail.com。", + "port": "SMTP 端口:QQ/163 用 465,Gmail 用 587。", + }), + _build_feature("receive_email", "接收邮件", "按状态 / 主题过滤接收邮件并保存。", + "office.api.email", "receive_email", + param_overrides={ + "key": {"label": "邮箱授权码"}, + "host": { + "kind": "choice", + "choices": ["smtp.qq.com", "smtp.163.com", "smtp.gmail.com"], + }, + "status": { + "kind": "choice", + "choices": ["UNSEEN", "SEEN", "ALL"], + }, + }, + param_descriptions={ + "key": "邮箱授权码(不是登录密码)。", + "msg_from": "发件人邮箱地址。", + "output_path": "邮件保存目录。", + "status": "邮件状态过滤:UNSEEN=未读 / SEEN=已读 / ALL=全部。", + "msg_subject": "邮件主题过滤(留空匹配所有)。", + "host": "邮件服务器地址。", + "port": "邮件服务器端口。", + }), + ] + cats.append(c) + + # --- Markdown 模块(excel2markdown 已移到 Excel 处理分类下)--- + + # --- 工具(按官方文档 https://www.python-office.com/modules/tools/api 的 10 个函数)--- + c = _cat("tools", "实用工具", "🛠️", 110) + c.features = [ + _build_feature("qrcodetools", "生成二维码", "把 URL 转为二维码图片。", + "office.api.tools", "qrcodetools", + param_overrides={ + "output": { + "kind": "save", + "file_filter": "Images (*.png *.jpg *.jpeg *.bmp *.gif)", + }, + }, + param_descriptions={ + "url": "要编码成二维码的网址或文本。", + "output": "二维码图片保存路径(另存为对话框,默认 ./qrcode_img.png)。", + }), + _build_feature("passwordtools", "随机密码", "生成指定长度的随机密码。", + "office.api.tools", "passwordtools", + param_descriptions={ + "len": "密码长度(默认 8)。", + }), + _build_feature("weather", "天气查询", "查询指定城市的天气。CLI 交互式(会按提示选择城市/日期),建议在终端使用。", + "office.api.tools", "weather", + cli_only=True, + cli_command=( + "python\n" + ">>> from office.api.tools import weather\n" + ">>> weather()\n" + "\n" + "# 或者直接命令行一行调用(按提示交互):\n" + "python -c \"from office.api.tools import weather; weather()\"\n" + ), + param_descriptions={}), + _build_feature("lottery8ticket", "彩票号码", "随机生成 8 位彩票号码。CLI 交互式(可重复生成直至满意),建议在终端使用。", + "office.api.tools", "lottery8ticket", + cli_only=True, + cli_command=( + "python\n" + ">>> from office.api.tools import lottery8ticket\n" + ">>> lottery8ticket()\n" + "\n" + "# 直接命令行调用:\n" + "python -c \"from office.api.tools import lottery8ticket; lottery8ticket()\"\n" + ), + param_descriptions={}), + _build_feature("pwd4wifi", "WiFi 密码字典(生成器)", + "按指定字符集 × 长度枚举所有可能密码,保存为字典文件。", + "office.api.tools", "pwd4wifi", + cli_only=True, + cli_command=( + "# ⚠️ 当前 office.api.tools.pwd4wifi 是空函数(wftools 库未实现),\n" + "# 所以 GUI 点'运行'什么也不会发生。请直接用下面的代码生成字典:\n" + "\n" + "python\n" + ">>> import itertools\n" + ">>> # 字符集:手机号段\n" + ">>> charset = '0123456789'\n" + ">>> length = 8\n" + ">>> # 生成所有 8 位纯数字组合(10^8 = 1 亿条,建议限制长度)\n" + ">>> with open('wifi_dict.txt', 'w') as f:\n" + ">>> for combo in itertools.product(charset, repeat=length):\n" + ">>> f.write(''.join(combo) + '\\n')\n" + "\n" + "# 一行命令(生成 6 位纯数字字典,1MB 左右):\n" + "python -c \"import itertools; open('wifi_dict.txt','w').writelines(\n" + " ''.join(p)+'\\n' for p in itertools.product('0123456789', repeat=6))\"\n" + "\n" + "# ⚠️ 真正的 WiFi 破解需要:\n" + "# 1. pywifi 扫描附近 WiFi 的 SSID + 信号强度\n" + "# 2. 字典逐条尝试连接(一次握手需 1-5 秒)\n" + "# 3. 通常需要管理员权限 + 真实网卡\n" + "# python-office 暂未集成这一套;可参考 pywifi + 字典爆破脚本\n" + ), + param_overrides={ + "len_pwd": {"kind": "int"}, + "pwd_list": {"kind": "str"}, + }, + param_descriptions={ + "len_pwd": "密码长度(默认 8)。", + "pwd_list": "可选:自定义字符集(用文本框输入),如 '0123456789' 或 'abc123'。", + }), + _build_feature("net_speed_test", "网速测试", "测试当前网络的上传/下载速度(speedtest.net)。CLI 交互式(会持续输出进度),建议在终端使用。", + "office.api.tools", "net_speed_test", + cli_only=True, + cli_command=( + "python\n" + ">>> from office.api.tools import net_speed_test\n" + ">>> net_speed_test()\n" + "\n" + "# 直接命令行调用:\n" + "python -c \"from office.api.tools import net_speed_test; net_speed_test()\"\n" + ), + param_descriptions={}), + _build_feature("VatInvoiceOCR2Excel", "增值税发票识别 → Excel", + "调用百度智能云 OCR 识别发票图片 / PDF 中的关键字段,导出为 Excel 文件。支持单张/批量。", + "office.api.ocr", "VatInvoiceOCR2Excel", + cli_only=True, + cli_command=( + "# =================== 增值税发票识别 使用说明 ===================\n" + "#\n" + "# 📌 原理:调用百度智能云的「增值税发票识别」API(OCR 引擎),\n" + "# 把图片/PDF 中的发票号、金额、税额、销售方等字段识别后写入 Excel。\n" + "#\n" + "# ─────────── 1. 申请百度智能云 OCR 凭据(必须)───────────\n" + "# a) 注册账号:https://ai.baidu.com/\n" + "# b) 顶部菜单「文字识别 OCR」→「增值税发票识别」→ 点击「立即使用」\n" + "# c) 创建应用:\n" + "# - 应用名称:python-office(随便起)\n" + "# - 应用类型:选择「纯应用」或「服务端」\n" + "# - 勾选「增值税发票识别」服务\n" + "# d) 创建完成后,在「应用列表」里点开,看「API Key」和「Secret Key」\n" + "# 复制下来 → 填入下方命令的 id / key 参数\n" + "#\n" + "# ─────────── 2. 安装依赖(首次)───────────\n" + "pip install python-office[ocr] openpyxl\n" + "\n" + "# ─────────── 3. 准备发票图片/PDF ───────────\n" + "# - 单张:d:/invoices/01.jpg\n" + "# - 批量:把所有发票放到 d:/invoices/ 目录(支持 jpg/png/pdf)\n" + "\n" + "# ─────────── 4. 命令行调用 ───────────\n" + "# 单张:\n" + "python -c \"\n" + "from office.api.ocr import VatInvoiceOCR2Excel\n" + "VatInvoiceOCR2Excel(\n" + " input_path='d:/invoices/01.jpg',\n" + " output_path='d:/result',\n" + " output_excel='invoices.xlsx',\n" + " id='你的 API Key',\n" + " key='你的 Secret Key',\n" + " file_name=True, # 用文件名当 Sheet 名(多发票时建议开启)\n" + " trans=False, # 是否同时翻译为英文(按需)\n" + ")\"\n" + "\n" + "# 批量(传入目录):\n" + "python -c \"\n" + "from office.api.ocr import VatInvoiceOCR2Excel\n" + "VatInvoiceOCR2Excel(\n" + " input_path='d:/invoices/',\n" + " output_path='d:/result',\n" + " id='你的 API Key',\n" + " key='你的 Secret Key',\n" + " file_name=True,\n" + ")\"\n" + "\n" + "# ─────────── 5. 输出 ───────────\n" + "# 生成 d:/result/invoices.xlsx,Sheet 名 = 文件名\n" + "# 每行一张发票的关键字段(发票号、购买方、销售方、金额、税额等)\n" + "\n" + "# ─────────── 6. 常见问题 ───────────\n" + "# Q: 报错「access_token invalid」?\n" + "# A: id / key 填错了,或应用未勾选「增值税发票识别」服务。\n" + "#\n" + "# Q: 报错「image format error」?\n" + "# A: 图片损坏 / 格式不支持 → 重新导出 jpg/png;PDF 用 pdf 转图工具预处理。\n" + "\n" + "# Q: 每天免费额度?\n" + "# A: 百度 OCR 增值税发票识别有赠送免费额度(几百~几千次/月),够个人用。\n" + ), + param_overrides={ + "img_url": {"kind": "str"}, + "id": {"label": "百度 API Key ID"}, + "key": {"label": "百度 Secret Key"}, + "file_name": {"kind": "bool"}, + "trans": {"kind": "bool"}, + }, + param_descriptions={ + "input_path": "发票图片 / PDF 的路径,或包含多张发票的目录。", + "output_path": "输出 Excel 的保存目录。", + "output_excel": "输出 Excel 文件名(默认 VatInvoiceOCR2Excel.xlsx)。", + "img_url": "可选:在线发票图片 URL(与 input_path 二选一)。", + "id": "百度智能云 OCR 应用的 Access Key ID(在百度智能云控制台创建「文字识别 OCR」应用后获取)。", + "key": "百度智能云 OCR 应用的 Secret Key。", + "file_name": "True=用图片文件名作为 Sheet 名(多张发票时建议开启)。", + "trans": "True=同时把识别结果翻译为英文。", + }), + _build_feature("t0", "T+0 交易成本计算", "计算股票 T+0 交易费率与净收益。", + "office.api.finance", "t0", + param_descriptions={ + "buy_price": "买入价格(元 / 股)。", + "sale_price": "卖出价格(元 / 股)。", + "shares": "交易股数。", + "w_rate": "佣金费率(默认 2.5/10000 = 万 2.5 = 0.025%)。", + "min_rate": "单笔最低手续费(元,默认 5;交易额 ≤ 20000 时按此收)。", + "stamp_tax": "印花税率(默认 1/1000 = 千 1 = 0.1%,卖出时扣)。", + }), + _build_feature("course", "项目信息", "显示 python-office 项目信息和资源链接。", + "office.api.tools", "course", + info_html=( + "

    📦 python-office

    " + "

    One-line Python automation for office & daily work.

    " + "
    " + "

    📚 学习资源

    " + "
    " + "

    💬 社区交流

    " + "" + "

    🎯 子模块速查

    " + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "
    分类子包功能
    📕 PDFpopdfPDF 转 Word / Excel / 图片、合并、拆分、加密
    📊 Excelpoexcel批量拆分 Excel、按列拆分、合并
    📝 WordpowordWord 转 PDF、批量加水印
    🎨 PPTpoppt批量生成 PPT
    🖼️ 图片poimage加水印、压缩、转字符画、GIF 拼接
    📂 文件pofile批量重命名、整理文件、按类型分类
    📧 邮件poemail群发邮件、读取收件箱
    🔍 OCRpoocr增值税发票识别 → Excel
    🎬 视频povideo视频合成、压缩、提取音频
    💬 微信PyOfficeRobot自动发消息、关键词回复、智能机器人
    🛠️ 工具wftools翻译、二维码、随机密码、天气、网速
    📈 金融pofinance股票 T+0 交易成本计算
    " + "
    " + "

    " + "💡 安装指定子模块:pip install python-office[pdf,excel,...]
    " + "💡 安装所有子模块:pip install python-office[all]
    " + "💡 Windows 全功能:pip install python-office[all-windows]" + "

    " + ), + param_descriptions={}), + ] + cats.append(c) + + # --- 微信机器人(按官方文档 https://www.python-office.com/modules/wechat/api 的 7 个函数)--- + c = _cat("wechat", "微信机器人", "💬", 120) + c.features = [ + _build_feature("send_message", "发送消息", "向好友 / 群发送文本消息。", + "office.api.wechat", "send_message", + cli_only=True, + cli_command=( + "# 前置:PC 微信客户端已登录\n" + "python -c \"from office.api.wechat import send_message; send_message('好友备注', '消息内容')\"\n" + ), + param_descriptions={ + "who": "好友昵称 / 群名(如 '文件传输助手' / '家人')。", + "message": "要发送的文本内容。", + }), + _build_feature("send_message_by_time", "定时发送", "在指定时间自动发送消息。", + "office.api.wechat", "send_message_by_time", + cli_only=True, + cli_command=( + "# 前置:PC 微信客户端已登录;到点前请保持程序运行\n" + "python -c \"from office.api.wechat import send_message_by_time; " + "send_message_by_time('好友备注', '消息内容', '2026-06-15 09:00:00')\"\n" + "# 程序会一直等到指定时间才发,期间保持窗口不关闭\n" + ), + param_descriptions={ + "who": "好友昵称 / 群名。", + "message": "要发送的文本内容。", + "time": "定时发送时间,格式 'YYYY-MM-DD HH:MM:SS',如 '2026-06-15 09:00:00'。", + }), + _build_feature("chat_by_keywords", "关键词自动回复", "根据关键词字典自动回复好友 / 群。", + "office.api.wechat", "chat_by_keywords", + cli_only=True, + cli_command=( + "# 前置:PC 微信客户端已登录\n" + "# keywords 传 dict,例如 {\"你好\": \"你好!\", \"在吗\": \"在的\"}\n" + "python -c \"from office.api.wechat import chat_by_keywords; " + "chat_by_keywords('好友备注', {'你好': '你好!'})\"\n" + "# 进入无限循环监听,按 Ctrl+C 退出\n" + ), + param_overrides={ + "keywords": {"kind": "text"}, + }, + param_descriptions={ + "who": "要监听的好友 / 群名。", + "keywords": "关键词 → 回复内容的字典,多行文本框输入 JSON,例如 {\"你好\": \"你好!\"}。", + }), + _build_feature("send_file", "发送文件", "通过微信发送本地文件给好友 / 群。", + "office.api.wechat", "send_file", + cli_only=True, + cli_command=( + "# 前置:PC 微信客户端已登录\n" + "python -c \"from office.api.wechat import send_file; send_file('好友备注', 'C:/path/file.pdf')\"\n" + ), + param_descriptions={ + "who": "好友昵称 / 群名。", + "file": "要发送的文件路径。", + }), + _build_feature("group_send", "群发消息", "按预设群组列表批量发送消息。", + "office.api.wechat", "group_send", + cli_only=True, + cli_command=( + "# 前置:PC 微信客户端已登录;首次运行会弹窗让你配置群组名单\n" + "python -c \"from office.api.wechat import group_send; group_send()\"\n" + "# 会弹出 PyQt5 配置窗口,配置好后保存为本地名单文件\n" + ), + param_descriptions={}), + _build_feature("receive_message", "接收消息", "监听并保存收到的微信消息。", + "office.api.wechat", "receive_message", + cli_only=True, + cli_command=( + "# 前置:PC 微信客户端已登录\n" + "python -c \"from office.api.wechat import receive_message; " + "receive_message('好友备注', 'userMessage.txt', 'C:/path/save')\"\n" + "# 进入无限循环监听,按 Ctrl+C 退出\n" + ), + param_overrides={ + "output_path": {"kind": "dir"}, + }, + param_descriptions={ + "who": "要监听的好友 / 群名(默认 '文件传输助手')。", + "txt": "消息保存的文本文件名(默认 'userMessage.txt')。", + "output_path": "消息文件保存目录。", + }), + _build_feature("chat_robot", "智能聊天(微信自动回复机器人)", + "在 PC 微信上监听指定好友的消息,自动调用大模型(GPT/DeepSeek/智谱等)生成回复并发回给对方。", + "office.api.wechat", "chat_robot", + cli_only=True, + cli_command=( + "# 前置条件:\n" + "# 1. PC 微信客户端已登录\n" + "# 2. 配置了大模型 API Key(OpenAI / DeepSeek / 智谱 等)\n" + "#\n" + "# 启动方式 —— 在 PowerShell / CMD 中执行:\n" + "python -c \"from office.api.wechat import chat_robot; chat_robot('好友备注名')\"\n" + "\n" + "# 或交互式 Python:\n" + "python\n" + ">>> from office.api.wechat import chat_robot\n" + ">>> chat_robot('好友备注名') # 进入无限循环监听\n" + "# 按 Ctrl+C 退出\n" + ), + platform_note="依赖 PC 微信客户端 + 大模型 API Key;运行后会无限循环,需 Ctrl+C 退出。", + param_descriptions={ + "who": "聊天对象(微信里的备注名称,不支持特殊字符,默认 '程序员晚枫')。", + }), + ] + cats.append(c) + + gui_cats: list[Category] = [] + for cat in cats: + features = [feat for feat in cat.features if not feat.cli_only] + if features: + gui_cats.append(Category( + id=cat.id, + title=cat.title, + icon=cat.icon, + order=cat.order, + features=features, + )) + + gui_cats.sort(key=lambda x: x.order) + return gui_cats + + +def find_feature(categories: list[Category], feature_id: str) -> Optional[Feature]: + """按 id 查找 Feature。""" + for cat in categories: + for feat in cat.features: + if feat.id == feature_id: + return feat + return None diff --git a/gui/run.py b/gui/run.py new file mode 100644 index 00000000..d3be50af --- /dev/null +++ b/gui/run.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +"""启动入口:``python -m gui.run`` 或 ``python-office-gui``。""" + +import os +import sys +import importlib +from pathlib import Path + +sys.dont_write_bytecode = True +os.environ.setdefault("PYTHONDONTWRITEBYTECODE", "1") + + +def _runtime_log(base: Path, message: str) -> None: + if not os.environ.get("PYTHON_OFFICE_GUI_DEBUG"): + return + try: + with (base / "python-office-gui-runtime.log").open( + "a", encoding="utf-8" + ) as fh: + fh.write(message.rstrip() + "\n") + except OSError: + pass + + +def _prepare_bundled_runtime() -> None: + """Allow Nuitka standalone builds to load copied pure/binary packages. + + The build script places large third-party packages in ``/lib`` so + they can remain normal Python packages instead of being compiled into C. + """ + base = Path(sys.executable).resolve().parent + lib_dir = base / "lib" + if not lib_dir.is_dir(): + return + + lib_path = str(lib_dir) + if lib_path not in sys.path: + sys.path.insert(0, lib_path) + for extra in ( + lib_dir / "win32", + lib_dir / "win32" / "lib", + lib_dir / "site-packages" / "win32" / "lib", + ): + if extra.is_dir(): + extra_path = str(extra) + if extra_path not in sys.path: + sys.path.insert(0, extra_path) + os.environ["PATH"] = lib_path + os.pathsep + os.environ.get("PATH", "") + + dll_dirs = [lib_dir] + for child_name in ( + "numpy.libs", + "pandas.libs", + "cv2", + "PIL", + "pymupdf", + "pywin32_system32", + "win32", + ): + child = lib_dir / child_name + if child.is_dir(): + dll_dirs.append(child) + + add_dll_directory = getattr(os, "add_dll_directory", None) + for dll_dir in dll_dirs: + dll_path = str(dll_dir) + os.environ["PATH"] = dll_path + os.pathsep + os.environ.get("PATH", "") + if add_dll_directory is not None: + try: + add_dll_directory(dll_path) + except OSError as exc: + _runtime_log(base, f"add_dll_directory failed: {dll_path}: {exc}") + + _runtime_log(base, f"bundled lib enabled: {lib_dir}") + _runtime_log(base, "dll dirs: " + "; ".join(str(p) for p in dll_dirs)) + + +_prepare_bundled_runtime() + + +def _run_self_test() -> int: + base = Path(sys.executable).resolve().parent + modules = [ + "office.api.pdf", + "office.api.excel", + "office.api.word", + "office.api.ppt", + "office.api.image", + "office.api.file", + "office.api.video", + "office.api.email", + "office.api.tools", + "popdf", + "poexcel", + "poword", + "poppt", + "poimage", + "pofile", + "povideo", + "poemail", + "wftools", + "numpy", + "pandas", + "fitz", + "cv2", + "PIL", + ] + failures = [] + for module_name in modules: + try: + importlib.import_module(module_name) + except Exception as exc: + failures.append(f"{module_name}: {exc!r}") + + log_path = base / "python-office-gui-self-test.log" + with log_path.open("w", encoding="utf-8") as fh: + if failures: + fh.write("FAILED\n") + fh.write("\n".join(failures)) + fh.write("\n") + else: + fh.write("OK\n") + return 1 if failures else 0 + + +if "--self-test" in sys.argv: + sys.exit(_run_self_test()) + + +def _run_startup_probe() -> int: + import time + + base = Path(sys.executable).resolve().parent if getattr(sys, "frozen", False) else Path.cwd() + start = time.perf_counter() + from gui.app import create_app + from gui.main_window import MainWindow + + app = create_app([]) + window = MainWindow() + elapsed = time.perf_counter() - start + with (base / "python-office-gui-startup-probe.log").open("w", encoding="utf-8") as fh: + fh.write(f"{elapsed:.3f}\n") + window.deleteLater() + app.quit() + return 0 + + +if "--startup-probe" in sys.argv: + sys.exit(_run_startup_probe()) + +from gui.app import main + +if __name__ == "__main__": + sys.exit(main()) diff --git a/gui/styles.py b/gui/styles.py new file mode 100644 index 00000000..1389b7d6 --- /dev/null +++ b/gui/styles.py @@ -0,0 +1,466 @@ +# -*- coding: utf-8 -*- +"""Global QSS theme for a lighter desktop productivity interface.""" + +from __future__ import annotations + +import base64 + +# UI/UX Pro Max direction: bright productivity teal with restrained orange CTA. +CANVAS = "#F0FDFA" +SIDEBAR = "#F8FFFC" +SURFACE = "#FFFFFF" +SURFACE_ALT = "#ECFDF5" +SURFACE_SOLID = SURFACE +LINE = "rgba(13, 148, 136, 0.16)" +LINE_STRONG = "rgba(13, 148, 136, 0.34)" +TEXT = "#134E4A" +TEXT_ON_DARK = "#0F2F2C" +TEXT_MUTED = "#5F7F7A" +TEXT_DIM = "#7A9A95" +BLUE = "#0D9488" +BLUE_HOVER = "#14B8A6" +BLUE_SOFT = "rgba(20, 184, 166, 0.12)" +BLUE_PRESS = "#0F766E" +RED = "#F97316" +RED_HOVER = "#FB923C" +RED_SOFT = "rgba(249, 115, 22, 0.14)" +GREEN = "#10B981" + +# Backward-compatible names used by custom-painted widgets. +BASE = CANVAS +MANTLE = SIDEBAR +CRUST = LINE +SURFACE0 = LINE +SURFACE1 = LINE_STRONG +SURFACE2 = TEXT_DIM +LAKE = BLUE +LAKE_DEEP = BLUE_PRESS +LAKE_DARK = TEXT +LAKE_LIGHT = BLUE_HOVER +LAKE_SOFT = BLUE_SOFT +LAKE_TINT = "rgba(36, 201, 244, 0.10)" +AMBER = RED +AMBER_DARK = "#C2410C" +SUCCESS = GREEN +DANGER = RED +DANGER_LIGHT = RED_SOFT + +TERMINAL_BG = "#F8FAFC" +TERMINAL_FG = "#134E4A" +TERMINAL_ACC = BLUE + +RADIUS_SM = 8 +RADIUS_MD = 10 +RADIUS_LG = 14 +SIDEBAR_WIDTH = 292 + +_CHECKMARK_SVG = ( + '' + '' + '' +) +_CHECKMARK_URL = "data:image/svg+xml;base64," + base64.b64encode( + _CHECKMARK_SVG.encode("utf-8") +).decode("ascii") + +QSS = f""" +* {{ + font-family: "Segoe UI", "Microsoft YaHei UI", "Microsoft YaHei", "PingFang SC", "SF Pro Text", sans-serif; + font-size: 13px; + color: {TEXT}; + outline: 0; +}} + +QMainWindow, QWidget#centralWidget {{ + background: qlineargradient( + x1:0, y1:0, x2:1, y2:1, + stop:0 #F0FDFA, + stop:0.44 #ECFEFF, + stop:0.74 #F8FAFC, + stop:1 #FFF7ED + ); +}} + +QMenuBar {{ + background: rgba(255, 255, 255, 0.86); + color: {TEXT_MUTED}; + padding: 5px 10px; + border: none; + font-weight: 600; +}} + +QMenuBar::item {{ + background: transparent; + padding: 6px 12px; + border-radius: {RADIUS_SM}px; +}} + +QMenuBar::item:selected {{ + background: {BLUE_SOFT}; + color: {TEXT}; +}} + +QMenu {{ + background: rgba(255, 255, 255, 0.98); + border: 1px solid {LINE_STRONG}; + border-radius: {RADIUS_MD}px; + padding: 6px; +}} + +QMenu::item {{ + color: {TEXT}; + padding: 8px 28px 8px 16px; + border-radius: {RADIUS_SM}px; +}} + +QMenu::item:selected {{ + background: {BLUE_SOFT}; +}} + +QMenu::separator {{ + height: 1px; + background: {LINE}; + margin: 5px 8px; +}} + +QWidget#sidebar {{ + background: qlineargradient( + x1:0, y1:0, x2:0, y2:1, + stop:0 #FFFFFF, + stop:0.58 #F8FFFC, + stop:1 #ECFDF5 + ); + border: none; + border-right: 1px solid rgba(13, 148, 136, 0.18); +}} + +QScrollArea#categoryList, +QScrollArea {{ + background: transparent; + border: none; +}} + +QScrollArea::viewport, +QWidget#pageContent {{ + background: transparent; +}} + +QWidget#sidebarInner {{ + background: transparent; +}} + +QLabel#sidebarAuthor {{ + color: #5F7F7A; + background: rgba(240, 253, 250, 0.82); + border-top: 1px solid rgba(13, 148, 136, 0.14); + padding: 7px 22px; + font-size: 11px; + font-weight: 650; + letter-spacing: 0.2px; +}} + +QLabel#sidebarCategoryHeader {{ + background: transparent; + border: none; + padding: 0; +}} + +QToolButton#sidebarFeatureBtn {{ + background: transparent; + border: none; + padding: 0; + margin: 0; + text-align: left; +}} + +QStackedWidget#pages, +QWidget#pageRoot {{ + background: transparent; + border: none; +}} + +QLabel#pageTitle {{ + font-size: 28px; + font-weight: 750; + color: {TEXT}; + padding: 2px 0 0 0; + background: transparent; +}} + +QLabel#pageDesc {{ + color: {TEXT_MUTED}; + font-size: 13px; + padding: 0 0 12px 0; + background: transparent; + line-height: 1.35; +}} + +QFrame#card, QWidget#card {{ + background: {SURFACE}; + border: 1px solid rgba(13, 148, 136, 0.14); + border-radius: {RADIUS_MD}px; +}} + +QFrame#card QLabel, QWidget#card QLabel {{ + color: {TEXT}; + background: transparent; +}} + +QLabel#cardTitle {{ + font-size: 12px; + font-weight: 800; + color: #0F766E; + letter-spacing: 0.4px; + padding: 0; + margin: 0; + text-transform: uppercase; + background: transparent; +}} + +QPushButton {{ + background: #FFFFFF; + color: {TEXT}; + border: 1px solid rgba(13, 148, 136, 0.22); + border-radius: {RADIUS_MD}px; + padding: 8px 16px; + min-height: 20px; + font-weight: 700; +}} + +QPushButton:hover {{ + background: #F0FDFA; + border-color: rgba(13, 148, 136, 0.50); +}} + +QPushButton:pressed {{ + background: #CCFBF1; +}} + +QPushButton:disabled {{ + color: #83A0B5; + background: rgba(215, 228, 239, 0.68); + border-color: rgba(215, 228, 239, 0.68); +}} + +QPushButton:focus {{ + border: 2px solid {BLUE}; + padding: 7px 15px; +}} + +QPushButton#primaryButton {{ + background: {RED}; + color: #FFFFFF; + border: 1px solid rgba(194, 65, 12, 0.22); + font-weight: 800; + padding: 9px 18px; +}} + +QPushButton#primaryButton:hover {{ + background: {RED_HOVER}; +}} + +QPushButton#primaryButton:pressed {{ + background: #EA580C; + color: white; +}} + +QPushButton#dangerButton {{ + background: #FFFFFF; + color: #DC2626; + border: 1px solid rgba(220, 38, 38, 0.24); +}} + +QPushButton#dangerButton:hover {{ + background: rgba(254, 242, 242, 0.92); + border-color: rgba(220, 38, 38, 0.50); +}} + +QLineEdit, QPlainTextEdit, QSpinBox, QDoubleSpinBox, QComboBox {{ + background: #FFFFFF; + color: {TEXT}; + border: 1px solid rgba(13, 148, 136, 0.22); + border-radius: {RADIUS_MD}px; + padding: 8px 11px; + selection-background-color: {BLUE}; + selection-color: #FFFFFF; +}} + +QLineEdit:hover, QPlainTextEdit:hover, QSpinBox:hover, +QDoubleSpinBox:hover, QComboBox:hover {{ + border-color: rgba(13, 148, 136, 0.44); +}} + +QLineEdit:focus, QPlainTextEdit:focus, QSpinBox:focus, +QDoubleSpinBox:focus, QComboBox:focus {{ + background: #FFFFFF; + border: 2px solid {BLUE}; + padding: 7px 10px; +}} + +QLineEdit:disabled, QPlainTextEdit:disabled, QSpinBox:disabled, +QDoubleSpinBox:disabled, QComboBox:disabled {{ + color: #83A0B5; + background: rgba(215, 228, 239, 0.68); + border-color: rgba(215, 228, 239, 0.68); +}} + +QComboBox {{ + padding-right: 26px; +}} + +QComboBox::drop-down {{ + border: none; + width: 24px; + subcontrol-origin: padding; + subcontrol-position: top right; +}} + +QComboBox::down-arrow {{ + image: none; + width: 0; + height: 0; + border-left: 4px solid transparent; + border-right: 4px solid transparent; + border-top: 5px solid #527D77; + margin-right: 8px; +}} + +QComboBox QAbstractItemView {{ + background: #FFFFFF; + border: 1px solid rgba(13, 148, 136, 0.28); + border-radius: {RADIUS_MD}px; + selection-background-color: {BLUE_SOFT}; + selection-color: {TEXT}; + outline: 0; + padding: 4px; +}} + +QCheckBox, QRadioButton {{ + spacing: 8px; + color: {TEXT}; + padding: 2px 0; +}} + +QCheckBox::indicator, QRadioButton::indicator {{ + width: 18px; + height: 18px; + border-radius: 5px; + border: 1px solid rgba(13, 148, 136, 0.34); + background: #FFFFFF; +}} + +QRadioButton::indicator {{ + border-radius: 9px; +}} + +QCheckBox::indicator:checked {{ + background: {BLUE}; + border-color: {BLUE}; + image: url({_CHECKMARK_URL}); +}} + +QRadioButton::indicator:checked {{ + background: {BLUE}; + border-color: {BLUE}; +}} + +QPlainTextEdit#logView {{ + background: {TERMINAL_BG}; + color: {TERMINAL_FG}; + border: 1px solid rgba(13, 148, 136, 0.16); + border-radius: {RADIUS_MD}px; + padding: 12px 14px; + font-family: "SF Mono", "Cascadia Code", "Consolas", monospace; + font-size: 12px; + selection-background-color: {BLUE}; + selection-color: #FFFFFF; +}} + +QToolButton {{ + background: #FFFFFF; + color: {TEXT}; + border: 1px solid rgba(13, 148, 136, 0.22); + border-radius: {RADIUS_MD}px; + padding: 7px 10px; +}} + +QToolButton:hover {{ + background: #F0FDFA; + border-color: rgba(13, 148, 136, 0.44); +}} + +QScrollBar:vertical {{ + background: transparent; + width: 10px; + margin: 4px 2px; + border: none; +}} + +QScrollBar::handle:vertical {{ + background: rgba(13, 148, 136, 0.22); + border-radius: 5px; + min-height: 36px; +}} + +QScrollBar::handle:vertical:hover {{ + background: rgba(13, 148, 136, 0.42); +}} + +QScrollBar::add-line:vertical, QScrollBar::sub-line:vertical {{ + height: 0; + background: none; +}} + +QScrollBar:horizontal {{ + background: transparent; + height: 10px; + margin: 2px 4px; + border: none; +}} + +QScrollBar::handle:horizontal {{ + background: rgba(13, 148, 136, 0.22); + border-radius: 5px; + min-width: 36px; +}} + +QScrollBar::add-line:horizontal, QScrollBar::sub-line:horizontal {{ + width: 0; + background: none; +}} + +QStatusBar {{ + background: rgba(255, 255, 255, 0.88); + color: {TEXT_MUTED}; + border-top: 1px solid rgba(13, 148, 136, 0.14); + padding: 5px 14px; + font-size: 12px; +}} + +QSplitter::handle {{ + background: rgba(13, 148, 136, 0.14); +}} + +QSplitter::handle:horizontal {{ + width: 1px; +}} + +QSplitter::handle:vertical {{ + height: 1px; +}} + +QToolTip {{ + background: rgba(15, 47, 44, 0.96); + color: white; + border: 1px solid rgba(20, 184, 166, 0.34); + border-radius: {RADIUS_SM}px; + padding: 6px 10px; + font-size: 12px; +}} +""" + + +def apply_theme(app) -> None: + app.setStyleSheet(QSS) diff --git a/gui/tests/__init__.py b/gui/tests/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/gui/tests/test_smoke.py b/gui/tests/test_smoke.py new file mode 100644 index 00000000..c73375ff --- /dev/null +++ b/gui/tests/test_smoke.py @@ -0,0 +1,93 @@ +# -*- coding: utf-8 -*- +"""Lightweight tests for the optional PySide6 GUI layer.""" + +from __future__ import annotations + +import warnings + + +def test_deprecated_params_warns_and_remaps(): + from office.lib.decorator_utils import deprecated_params + + @deprecated_params({"old_name": "new_name"}) + def fn(new_name=None, old_name=None): + return new_name + + with warnings.catch_warnings(record=True) as caught: + warnings.simplefilter("always") + result = fn(old_name="x") + + assert result == "x" + assert any(issubclass(item.category, DeprecationWarning) for item in caught) + + +def test_registry_builds_expected_categories(): + from gui.registry import build_registry + + cats = build_registry() + ids = {cat.id for cat in cats} + + assert ids >= { + "pdf", + "excel", + "word", + "ppt", + "image", + "file", + "video", + "email", + "tools", + } + assert all(cat.features for cat in cats) + + +def test_feature_params_are_resolved_lazily(): + from gui.registry import build_registry, resolve_feature + + cats = build_registry() + feature = next( + item + for cat in cats + if cat.id == "pdf" + for item in cat.features + if item.id == "pdf2docx" + ) + + assert feature.resolved is False + assert feature.params == [] + + resolve_feature(feature) + + assert feature.resolved is True + assert {param.name for param in feature.params} >= { + "input_file", + "output_file", + "input_path", + "output_path", + } + + +def test_feature_cards_are_actionable_or_explained(): + from gui.registry import build_registry + + cats = build_registry() + + features = [feature for cat in cats for feature in cat.features] + + assert features + assert all( + not feature.cli_only or feature.cli_command + for feature in features + ) + + +def test_param_to_widget_value_conversions(): + from gui.registry import Param + + assert Param(name="x", label="X", kind="int").to_widget_value("42") == 42 + assert Param(name="x", label="X", kind="int").to_widget_value("bad") is None + assert Param(name="x", label="X", kind="float").to_widget_value("3.14") == 3.14 + assert Param(name="x", label="X", kind="files").to_widget_value("a.pdf;b.pdf") == [ + "a.pdf", + "b.pdf", + ] diff --git a/gui/widgets/__init__.py b/gui/widgets/__init__.py new file mode 100644 index 00000000..7c618945 --- /dev/null +++ b/gui/widgets/__init__.py @@ -0,0 +1,12 @@ +# -*- coding: utf-8 -*- +"""GUI 通用控件包。""" + +from gui.widgets.param_form import ( + BoolField, ChoiceField, FileField, FloatField, IntField, + ParamForm, TextField, make_field, +) + +__all__ = [ + "BoolField", "ChoiceField", "FileField", "FloatField", "IntField", + "ParamForm", "TextField", "make_field", +] diff --git a/gui/widgets/param_form.py b/gui/widgets/param_form.py new file mode 100644 index 00000000..af1f5c0d --- /dev/null +++ b/gui/widgets/param_form.py @@ -0,0 +1,392 @@ +# -*- coding: utf-8 -*- +"""通用控件:单参数表单。""" + +from __future__ import annotations + +import os +from typing import Any, Callable, Optional + +from PySide6.QtCore import Qt, Signal +from PySide6.QtWidgets import ( + QCheckBox, QComboBox, QDoubleSpinBox, QFileDialog, QHBoxLayout, + QLabel, QLineEdit, QPlainTextEdit, QPushButton, QSizePolicy, QSpinBox, + QToolButton, QWidget, +) + +from gui.registry import Param + + +class _BaseField(QWidget): + """抽象字段:暴露 value() / setValue() / clear()。""" + + valueChanged = Signal() + + def __init__(self, parent=None): + super().__init__(parent) + # 关键:高度由内容决定、宽度可缩, + # 但绝不被父布局在垂直方向上挤压成 0。 + self.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Fixed) + self.setMinimumHeight(32) + + def value(self) -> Any: ... + def setValue(self, v: Any) -> None: ... + def clear(self) -> None: ... + + +class TextField(_BaseField): + def __init__(self, kind: str = "str", parent=None): + super().__init__(parent) + self._kind = kind + # password 走 QLineEdit(echo mode),text 走 QPlainTextEdit(多行),其余 QLineEdit + if kind == "password": + self._edit = QLineEdit() + self._edit.setEchoMode(QLineEdit.Password) + self._edit.setPlaceholderText("请输入...") + elif kind == "text": + self._edit = QPlainTextEdit() + self._edit.setPlaceholderText("请输入...") + self._edit.setFixedHeight(72) + else: + self._edit = QLineEdit() + self._edit.setPlaceholderText("请输入...") + lay = QHBoxLayout(self) + lay.setContentsMargins(0, 0, 0, 0) + lay.addWidget(self._edit) + + def value(self): + if isinstance(self._edit, QPlainTextEdit): + return self._edit.toPlainText() + return self._edit.text() + + def setValue(self, v): + if v is None: + return + if isinstance(self._edit, QPlainTextEdit): + self._edit.setPlainText(str(v)) + else: + self._edit.setText(str(v)) + + def clear(self): + if isinstance(self._edit, QPlainTextEdit): + self._edit.clear() + else: + self._edit.clear() + + +class IntField(_BaseField): + def __init__(self, parent=None): + super().__init__(parent) + self._spin = QSpinBox() + self._spin.setRange(-1_000_000, 1_000_000) + self._spin.setValue(0) + lay = QHBoxLayout(self) + lay.setContentsMargins(0, 0, 0, 0) + lay.addWidget(self._spin) + + def value(self): + return self._spin.value() + + def setValue(self, v): + if v is not None: + self._spin.setValue(int(v)) + + def clear(self): + self._spin.setValue(0) + + +class FloatField(_BaseField): + def __init__(self, parent=None): + super().__init__(parent) + self._spin = QDoubleSpinBox() + self._spin.setRange(-1e9, 1e9) + self._spin.setDecimals(4) + lay = QHBoxLayout(self) + lay.setContentsMargins(0, 0, 0, 0) + lay.addWidget(self._spin) + + def value(self): + return self._spin.value() + + def setValue(self, v): + if v is not None: + self._spin.setValue(float(v)) + + def clear(self): + self._spin.setValue(0.0) + + +class BoolField(_BaseField): + def __init__(self, parent=None): + super().__init__(parent) + self._cb = QCheckBox("启用") + lay = QHBoxLayout(self) + lay.setContentsMargins(0, 0, 0, 0) + lay.addWidget(self._cb) + + def value(self): + return self._cb.isChecked() + + def setValue(self, v): + if v is not None: + self._cb.setChecked(bool(v)) + + def clear(self): + self._cb.setChecked(False) + + +class ChoiceField(_BaseField): + def __init__(self, choices: list, parent=None): + super().__init__(parent) + self._combo = QComboBox() + self._combo.addItems([str(c) for c in choices]) + lay = QHBoxLayout(self) + lay.setContentsMargins(0, 0, 0, 0) + lay.addWidget(self._combo) + + def value(self): + return self._combo.currentText() + + def setValue(self, v): + if v is None: + return + idx = self._combo.findText(str(v)) + if idx >= 0: + self._combo.setCurrentIndex(idx) + + def clear(self): + if self._combo.count(): + self._combo.setCurrentIndex(0) + + +class FileField(_BaseField): + """单文件 / 多文件 / 目录 / 另存为 通用选择器。 + + mode 取值: + - ``file`` : 选已存在的单个文件(QFileDialog.getOpenFileName) + - ``files`` : 选已存在的多个文件,多个用分号拼接 + - ``dir`` : 选目录(QFileDialog.getExistingDirectory) + - ``save`` : 选保存位置(QFileDialog.getSaveFileName),用于 output_* 等参数 + """ + + def __init__(self, mode: str = "file", file_filter: str = "", + parent=None): + super().__init__(parent) + if mode not in ("file", "files", "dir", "save"): + mode = "file" + self._mode = mode + self._filter = file_filter or "All files (*.*)" + + self._edit = QLineEdit() + self._edit.setPlaceholderText({ + "file": "选择文件...", + "files": "选择多个文件(可分号 ; 拼接)...", + "dir": "选择目录...", + "save": "另存为...", + }[mode]) + + self._browse = QToolButton() + self._browse.setText("..." if mode == "save" else "Browse") + self._browse.setCursor(Qt.PointingHandCursor) + self._browse.setToolTip({ + "file": "选择文件", + "files": "选择多个文件", + "dir": "选择目录", + "save": "另存为", + }[mode]) + self._browse.clicked.connect(self._browse_clicked) + + # 把 QLineEdit 的 textChanged 透传为 valueChanged, + # 供 ParamForm 监听以做"派生字段跟随"逻辑。 + # textChanged 带 1 个 str 参数,valueChanged 不带参,这里用 lambda 显式丢弃。 + self._edit.textChanged.connect(lambda *_a: self.valueChanged.emit()) + + lay = QHBoxLayout(self) + lay.setContentsMargins(0, 0, 0, 0) + lay.addWidget(self._edit, 1) + lay.addWidget(self._browse) + + def _browse_clicked(self): + if self._mode == "dir": + path = QFileDialog.getExistingDirectory(self, "选择目录") + if path: + self._edit.setText(path) + elif self._mode == "save": + # 另存为:把当前文本作为默认路径/文件名 + current = self._edit.text() or "" + path, _ = QFileDialog.getSaveFileName( + self, "另存为", current, self._filter + ) + if path: + self._edit.setText(path) + else: + paths, _ = QFileDialog.getOpenFileNames(self, "选择文件", "", self._filter) + if paths: + self._edit.setText(";".join(paths) if self._mode == "files" else paths[0]) + + def value(self): + return self._edit.text() or None + + def setValue(self, v): + if v is not None: + self._edit.setText(str(v)) + + def clear(self): + self._edit.clear() + + +def make_field(param: Param) -> _BaseField: + """根据 Param.kind 创建对应控件。""" + if param.kind in ("file", "files", "dir", "save"): + return FileField(mode=param.kind, file_filter=param.file_filter) + if param.kind == "int": + return IntField() + if param.kind == "float": + return FloatField() + if param.kind == "bool": + return BoolField() + if param.kind in ("text",): + return TextField(kind="text") + if param.kind == "password": + return TextField(kind="password") + if param.kind == "choice" and param.choices: + return ChoiceField(param.choices) + return TextField(kind="str") + + +class ParamForm(QWidget): + """根据 Param 列表自动生成表单。 + + 派生字段自动跟随:当 ``output_file`` 这类 save 字段的对应 ``input_file`` + 变化时,output 字段会被重置为基于新 input 派生的默认路径, + 避免"input 已换但 output 还指向上一个文件"的问题。 + """ + + valueChanged = Signal() + + def __init__(self, params: list[Param], parent=None): + super().__init__(parent) + from PySide6.QtWidgets import QFormLayout + + self._params: list[Param] = list(params) + self._fields: dict[str, _BaseField] = {} + # save_name -> input_name 的配对关系 + self._save_pairs: dict[str, str] = {} + + layout = QFormLayout(self) + layout.setLabelAlignment(Qt.AlignLeft | Qt.AlignVCenter) + layout.setHorizontalSpacing(18) + layout.setVerticalSpacing(12) + layout.setContentsMargins(0, 0, 0, 0) + + for p in self._params: + field = make_field(p) + if p.default is not None: + field.setValue(p.default) + label_text = p.label + (" *" if p.required else "") + label = QLabel(label_text) + if p.placeholder and p.kind not in ("bool",): + if hasattr(field, "_edit"): + field._edit.setPlaceholderText(p.placeholder) + # 参数说明:同时挂到 label 和 field 上,鼠标悬停任意位置都能看到 + if p.description: + tip = p.description + label.setToolTip(tip) + field.setToolTip(tip) + layout.addRow(label, field) + self._fields[p.name] = field + field.valueChanged.connect( + lambda n=p.name: self._on_field_changed(n) + ) + + # 构建 save-input 配对,并触发一次初始派生 + for p in self._params: + if p.kind == "save": + input_name = self._pair_to_input(p.name) + if input_name in self._fields: + # input 字段为 dir 时不参与配对:dir 没有"文件名"概念, + # 不应触发 output_file 的自动派生(避免 with_suffix 出错)。 + input_param = next( + (pp for pp in self._params if pp.name == input_name), None + ) + if input_param and input_param.kind == "dir": + continue + self._save_pairs[p.name] = input_name + self._refresh_save_field(p.name) + + # ----- 派生字段联动 ----- + @staticmethod + def _pair_to_input(save_name: str) -> str: + """``output_xxx`` ↔ ``input_xxx``,``xxx_output`` ↔ ``xxx_input``。""" + if save_name.startswith("output_"): + return "input_" + save_name[len("output_"):] + if save_name.endswith("_output"): + return save_name[: -len("_output")] + "_input" + return "" + + @staticmethod + def _suffix_from_filter(flt: str) -> str: + """从 ``"Word documents (*.docx)"`` 中抽出 ``.docx``;``*.*`` 返回空。""" + import re + if not flt: + return "" + m = re.search(r"\*\.([a-zA-Z0-9]+)", flt) + if not m: + return "" + ext = m.group(1) + # 过滤 ``*.*`` 这种"任意文件"伪后缀 + if "*" in ext or "?" in ext: + return "" + return "." + ext + + def _on_field_changed(self, name: str) -> None: + """任一字段变化时检查是否有 save 配对需要重置。""" + for save_name, in_name in self._save_pairs.items(): + if in_name == name: + self._refresh_save_field(save_name) + + def _refresh_save_field(self, save_name: str) -> None: + """基于配对 input 字段重新计算 save 字段的派生值。""" + in_name = self._save_pairs.get(save_name) + if not in_name: + return + in_text = self._fields[in_name].value() + if not in_text: + return + from pathlib import Path + in_path = Path(in_text) + + save_param = next((p for p in self._params if p.name == save_name), None) + if save_param is None: + return + + # 后缀:优先用 save field 当前后缀(用户可能改过),其次 file_filter + ext = "" + current = self._fields[save_name].value() + if current: + cur_ext = Path(current).suffix + if cur_ext: + ext = cur_ext + if not ext: + ext = self._suffix_from_filter(save_param.file_filter) + if not ext: + ext = ".docx" + + new_path = str(in_path.with_suffix(ext)) + self._fields[save_name].setValue(new_path) + + # ----- 公共 API ----- + def collect(self) -> dict: + """收集当前表单值,按 Param 规则做类型转换,None 字段自动剔除。""" + result = {} + for p in self._params: + if p.name not in self._fields: + continue + raw = self._fields[p.name].value() + value = p.to_widget_value(raw) + if value is not None and value != "": + result[p.name] = value + return result + + def set_value(self, name: str, value: Any) -> None: + if name in self._fields: + self._fields[name].setValue(value) diff --git a/gui/workers.py b/gui/workers.py new file mode 100644 index 00000000..c16fa78a --- /dev/null +++ b/gui/workers.py @@ -0,0 +1,89 @@ +# -*- coding: utf-8 -*- +"""后台任务执行器 + 日志流。 + +设计要点: + 1. 用 ``QThread`` 把任意 Python 可调用体丢到后台线程运行, + 避免 UI 卡死; + 2. 线程内临时把 ``sys.stdout`` / ``sys.stderr`` 重定向到一个 + ``StringIO``,让子库内部的 ``print`` 输出也能被抓取; + 3. 通过 ``log`` 信号把日志增量发回主线程,避免跨线程直接操作 + QPlainTextEdit; + 4. ``finished`` 信号携带成功 / 失败状态,供主线程切换按钮状态 + 与追加 "✓ 完成 / ✗ 失败" 横幅。 +""" + +from __future__ import annotations + +import io +import sys +import traceback +from pathlib import Path +from typing import Any, Callable + +from PySide6.QtCore import QObject, QThread, Signal + + +class _LogEmitter(QObject): + log = Signal(str) + finished = Signal(bool, str) # (success, message) + + +class StdoutRedirector: + """上下文管理器:临时把 stdout/stderr 重定向到 ``_buf``。""" + + def __init__(self, buf: io.StringIO): + self._buf = buf + self._old_stdout = None + self._old_stderr = None + + def __enter__(self): + self._old_stdout, self._old_stderr = sys.stdout, sys.stderr + sys.stdout = sys.stderr = self._buf + return self._buf + + def __exit__(self, exc_type, exc_val, exc_tb): + sys.stdout, sys.stderr = self._old_stdout, self._old_stderr + + +class JobRunner(QThread): + """后台执行一个零参可调用。""" + + def __init__(self, func: Callable[..., Any], kwargs: dict, parent=None): + super().__init__(parent) + self._func = func + self._kwargs = dict(kwargs) + # 函数的返回值(run() 后由 result 属性访问)。 + # 注意:金融计算类函数(如 office.api.finance.t0)会返回数值, + # 这个值原来被丢弃 —— 现在保留下来供主线程显示。 + self.result: Any = None + # 把 emitter 设为 self 的子对象:JobRunner 销毁时 emitter 自动清理, + # 避免 "QThread destroyed while thread is still running" 警告。 + self._emitter = _LogEmitter(self) + self.log = self._emitter.log + self.job_finished = self._emitter.finished + + def run(self) -> None: + buf = io.StringIO() + try: + with StdoutRedirector(buf): + # 关键:接收返回值 —— 不再丢弃 + self.result = self._func(**self._kwargs) + output = buf.getvalue() + if output.strip(): + self.log.emit(output) + # 如果函数有非 None 返回值,自动追加到日志(让用户在"运行日志"区能看到结果) + if self.result is not None: + self.log.emit(f"✓ 结果:{self.result}") + self.job_finished.emit(True, "✓ 执行完成") + except Exception: + output = buf.getvalue() + if output.strip(): + self.log.emit(output) + tb = traceback.format_exc() + self.log.emit(tb) + self.job_finished.emit(False, "✗ 执行失败,请查看下方日志") + + +def make_runner(func: Callable, kwargs: dict) -> JobRunner: + """工厂函数:构造 JobRunner 实例,避免调用方直接接触 QThread。""" + return JobRunner(func, kwargs) diff --git a/office/__init__.py b/office/__init__.py index a52987e4..286e6456 100644 --- a/office/__init__.py +++ b/office/__init__.py @@ -1,25 +1,24 @@ -# 导入兼容性检查模块(必须在其他导入之前) -from office.compatibility import check_compatibility - -# 执行兼容性检查 -compatibility_checker = check_compatibility() - -from office.api import email -from office.api import excel -from office.api import file -from office.api import finance -from office.api import image -from office.api import pdf -from office.api import ppt -from office.api import tools -from office.api import video -from office.api import web -from office.api import wechat -from office.api import word -from office.api import markdown -from office.api import ocr -# 以下是beta版本 -from office.api.testApi import ruiming +# -*- coding: utf-8 -*- +"""python-office 顶层入口。 + +采用 PEP 562 (3.7+) 的模块级 ``__getattr__`` 实现按需懒加载: +用户 ``import office`` 之后,仅在真正访问 ``office.pdf`` / +``office.excel`` 等子模块时才会触发对应子包 import,避免一次性 +拉起全部第三方依赖。 + +副作用清理: + 不再在 import 阶段自动调用 ``check_compatibility()``。如需检查, + 显式执行 ``from office.compatibility import check_compatibility; + check_compatibility()``,或运行 ``python -m office.compatibility``。 +""" + +from __future__ import annotations + +import importlib +from types import ModuleType +from typing import Any + +__version__ = "1.0.6" __doc__ = """【python-office库】,功能持续更新中 使用有问题 or 提交你的功能需求 or 参与项目开发 @@ -27,4 +26,36 @@ 2、请+【项目交流群】:https://www.python4office.cn/wechat-group 3、本开源项目的【源代码】:https://github.com/CoderWanFeng/python-office""" -__version__ = '1.0.6' +# 子模块名 -> "office.api." 的映射。访问 office.pdf 时才会真正 import。 +_LAZY_SUBMODULES = { + "pdf": "office.api.pdf", + "excel": "office.api.excel", + "word": "office.api.word", + "ppt": "office.api.ppt", + "image": "office.api.image", + "file": "office.api.file", + "video": "office.api.video", + "email": "office.api.email", + "ocr": "office.api.ocr", + "markdown": "office.api.markdown", + "tools": "office.api.tools", + "wechat": "office.api.wechat", + "web": "office.api.web", + "finance": "office.api.finance", + "testApi": "office.api.testApi", +} + +__all__ = sorted(list(_LAZY_SUBMODULES.keys()) + ["__version__"]) + + +def __getattr__(name: str) -> Any: + if name in _LAZY_SUBMODULES: + full_name = _LAZY_SUBMODULES[name] + module = importlib.import_module(full_name) + globals()[name] = module + return module + raise AttributeError(f"module 'office' has no attribute {name!r}") + + +def __dir__() -> list[str]: + return sorted(list(globals().keys()) + list(_LAZY_SUBMODULES.keys())) diff --git a/office/api/email.py b/office/api/email.py index 40e95eeb..7e378422 100644 --- a/office/api/email.py +++ b/office/api/email.py @@ -1,44 +1,136 @@ -# # -*- coding:utf-8 -*- -# """ -# 关于这个功能的使用说明,见课程: -# """ -# import poemail -# from poemail.lib.Const import Mail_Type -# -# -# def send_email(key, msg_from, msg_to, msg_cc=None, attach_files=[], msg_subject='', content='', host=Mail_Type['qq'], -# port=465): -# """ -# 自动发送邮件 -# -# 参数: -# key (str): 邮箱账户密钥 -# msg_from (str): 发件人邮箱地址 -# msg_to (str): 收件人邮箱地址 -# file_path (str, 可选): 邮件附件路径,默认为None -# msg_subject (str, 可选): 邮件主题,默认为空字符串 -# content (str, 可选): 邮件内容,默认为空字符串 -# host (str, 可选): 邮箱服务器地址,默认为'qq' -# port (int, 可选): 邮箱服务器端口号,默认为465 -# -# 返回: -# 无 -# -# """ -# poemail.send.send_email(key=key, -# msg_from=msg_from, -# msg_to=msg_to, -# msg_cc=msg_cc, -# msg_subject=msg_subject, -# host=host, -# port=port) -# -# -# def receive_email(key, msg_from, msg_to, output_path=r'./', status="UNSEEN", msg_subject='', content='', -# host=Mail_Type['qq'], port=465): -# poemail.receive.receive_email(key=key, -# msg_from=msg_from, -# msg_to=msg_to, -# msg_subject=msg_subject, -# host=host, -# port=port, output_path=output_path, status=status) +# -*- coding: UTF-8 -*- +"""邮件发送 / 接收功能模块。 + +本模块按 https://www.python-office.com/modules/email/api 官方文档定义, +共 2 个函数,对应子包 ``poemail``: + + 1. send_email - 发送邮件(支持附件 / 抄送) + 2. receive_email - 接收邮件 + +邮箱配置: + + | 邮箱 | host | port | + |-------|-----------------|------| + | QQ | smtp.qq.com | 465 | + | 163 | smtp.163.com | 465 | + | Gmail | smtp.gmail.com | 587 | + +注意:``key`` 是**邮箱授权码**,不是登录密码。 + +Author: + 程序员晚枫 + +Project: + https://www.python-office.com +""" + +from __future__ import annotations + +from typing import List, Optional + +from poemail.api.send import send_email as _send_email_impl +from poemail.api.receive import receive_email as _receive_email_impl + + +__all__ = ["send_email", "receive_email"] + + +# ===================================================================== +# 1. send_email - 发送邮件 +# ===================================================================== + +def send_email( + key: str, + msg_from: str, + msg_to: str, + msg_cc: Optional[str] = None, + attach_files: Optional[List[str]] = None, + msg_subject: str = "", + content: str = "", + host: str = "smtp.qq.com", + port: int = 465, +) -> None: + """Send an email. + + 自动发送邮件,支持附件和抄送。 + + Documentation: https://www.python-office.com/modules/email/api#send_email + + Args: + key: 邮箱授权码(**不是登录密码**) + msg_from: 发件人邮箱地址 + msg_to: 收件人邮箱地址 + msg_cc: 抄送地址(多个用逗号分隔)。Default: ``None`` + attach_files: 附件文件路径列表。Default: ``None`` + msg_subject: 邮件主题。Default: ``''`` + content: 邮件正文。Default: ``''`` + host: SMTP 服务器地址,常见值 ``'smtp.qq.com'`` / ``'smtp.163.com'`` / ``'smtp.gmail.com'``。Default: ``'smtp.qq.com'`` + port: SMTP 服务器端口。Default: ``465`` + + Returns: + None + """ + if attach_files is None: + attach_files = [] + _send_email_impl( + key=key, + msg_from=msg_from, + msg_to=msg_to, + msg_cc=msg_cc, + attach_files=attach_files, + msg_subject=msg_subject, + content=content, + host=host, + port=port, + ) + print( + f"[python-office] send_email {msg_from} → {msg_to} " + f"主题:{msg_subject!r} 附件:{len(attach_files)} 个" + ) + + +# ===================================================================== +# 2. receive_email - 接收邮件 +# ===================================================================== + +def receive_email( + key: str, + msg_from: str, + output_path: str = "./", + status: str = "UNSEEN", + msg_subject: str = "", + host: str = "smtp.qq.com", + port: int = 465, +) -> str: + """Receive emails. + + 接收邮件并保存到指定目录。 + + Documentation: https://www.python-office.com/modules/email/api#receive_email + + Args: + key: 邮箱授权码 + msg_from: 发件人邮箱地址 + output_path: 邮件保存目录。Default: ``'./'`` + status: 邮件状态过滤,常用 ``'UNSEEN'``(未读)/ ``'SEEN'``(已读)。Default: ``'UNSEEN'`` + msg_subject: 邮件主题过滤(留空匹配所有)。Default: ``''`` + host: 邮件服务器地址。Default: ``'smtp.qq.com'`` + port: 邮件服务器端口。Default: ``465`` + + Returns: + str: 邮件保存目录 + """ + _receive_email_impl( + key=key, + msg_from=msg_from, + output_path=output_path, + status=status, + msg_subject=msg_subject, + host=host, + port=port, + ) + print( + f"[python-office] receive_email 账户:{msg_from} " + f"状态:{status!r} 输出:{output_path}" + ) + return output_path diff --git a/office/api/excel.py b/office/api/excel.py index 913dd7e5..bcc35d1a 100644 --- a/office/api/excel.py +++ b/office/api/excel.py @@ -1,30 +1,16 @@ # -*- coding: UTF-8 -*- -"""Excel processing functionality module. +"""Excel 处理功能模块。 -Excel处理功能模块。 +本模块按 https://www.python-office.com/modules/excel/api 官方文档定义, +共 7 个函数,对应子包 ``poexcel``: -This module provides rich Excel file processing capabilities including data simulation, -file merging/splitting, format conversion, and more. - -该模块提供了丰富的Excel文件处理功能,包括数据模拟、文件合并拆分、格式转换等。 - -Main Features: -- fake2excel: Automatically create Excel files with mock data -- merge2excel: Merge multiple Excel files into different sheets -- sheet2excel: Split different sheets from one Excel into separate files -- merge2sheet: Merge multiple sheets from multiple Excel files -- find_excel_data: Search for specific content in Excel files -- split_excel_by_column: Split Excel by specified column values -- excel2pdf: Convert Excel to PDF format - -主要功能: -- fake2excel: 自动创建Excel并模拟数据 -- merge2excel: 多个Excel合并到一个文件的不同sheet中 -- sheet2excel: 同一个Excel的不同sheet拆分为不同文件 -- merge2sheet: 多个Excel的多个sheet自动合并 -- find_excel_data: 搜索Excel中指定内容 -- split_excel_by_column: 按指定列拆分Excel -- excel2pdf: Excel转PDF格式 + 1. fake2excel - 自动生成模拟数据 + 2. merge2excel - 合并多个 Excel(不同 sheet) + 3. sheet2excel - 按 sheet 拆分 Excel + 4. merge2sheet - 合并多个 Excel 的多个 sheet + 5. find_excel_data - 在 Excel 中搜索内容 + 6. split_excel_by_column - 按指定列拆分 + 7. excel2pdf - Excel 转 PDF Author: 程序员晚枫 @@ -33,130 +19,270 @@ https://www.python-office.com """ +from __future__ import annotations + +from typing import List, Optional + import poexcel -def fake2excel(columns=['name'], rows=1, path='./fake2excel.xlsx', language='zh_CN'): +# ===================================================================== +# 1. fake2excel - 自动生成模拟数据 +# ===================================================================== + +def fake2excel( + columns: Optional[List[str]] = None, + rows: int = 1, + path: str = "./fake2excel.xlsx", + language: str = "zh_CN", +) -> str: """Automatically create Excel file with mock data. - - 自动创建Excel文件并模拟数据。 - - Video tutorial: https://www.bilibili.com/video/BV1wr4y1b7uk/ - + + 自动创建 Excel 文件并模拟数据。 + + 可用字段:name, phone, email, address, company, job, country, city, + postcode, ssn, credit_card_number, user_agent, text, sentence。 + + Documentation: https://www.python-office.com/modules/excel/api#fake2excel + Args: - columns (list): column names to generate / 需要生成的列名。Available columns / 可以模拟的列:https://www.python4office.cn/python-office/fake2excel/ - rows (int): number of rows to generate / 生成的行数。Default / 默认值: 1 - path (str): output file path and name / 生成的Excel文件路径和名称 - language (str): language for generated data / 数据语言。Default / 默认: 'zh_CN' (Chinese / 中文), can be 'english' / 可以填 'english' - + columns: 列名列表。Default: ``['name']`` + rows: 生成行数。Default: ``1`` + path: 输出 Excel 文件路径。Default: ``'./fake2excel.xlsx'`` + language: 数据语言,``'zh_CN'`` 或 ``'english'``。Default: ``'zh_CN'`` + Returns: - None + str: 实际写入的文件路径 """ + if columns is None or len(columns) == 0: + columns = ["name"] + if rows < 1: + rows = 1 poexcel.fake2excel(columns=columns, rows=rows, path=path, language=language) + print(f"[python-office] fake2excel 输出文件:{path}") + return path + + +# ===================================================================== +# 2. merge2excel - 合并多个 Excel(不同 sheet) +# ===================================================================== +def merge2excel(dir_path: str, output_file: str = "merge2excel.xlsx") -> str: + """Merge multiple Excel files into different sheets. + + 将多个 Excel 文件合并到一个 Excel 的不同 sheet 中。 + + Documentation: https://www.python-office.com/modules/excel/api#merge2excel -def merge2excel(dir_path, output_file='merge2excel.xlsx'): - """Merge multiple Excel files into different sheets of one Excel file. - - 将多个Excel文件合并到一个Excel的不同sheet中。 - - Documentation: https://mp.weixin.qq.com/s/3ZhZZfGlpNhszCWnOBeklg - Video tutorial: https://www.bilibili.com/video/BV1Th4y1Y7kd/ - Args: - dir_path (str): directory path containing multiple Excel files / 包含多个Excel文件的目录路径 - output_file (str): output merged Excel file path / 合并后的Excel文件路径。Default / 默认: 'merge2excel.xlsx' - + dir_path: 包含多个 Excel 文件的目录路径 + output_file: 合并后的 Excel 文件路径。Default: ``'merge2excel.xlsx'`` + Returns: - None + str: 合并后的文件路径 """ poexcel.merge2excel(dir_path=dir_path, output_file=output_file) + print(f"[python-office] merge2excel 输出文件:{output_file}") + return output_file + + +# ===================================================================== +# 3. sheet2excel - 按 sheet 拆分 Excel +# ===================================================================== + +def sheet2excel(file_path: str, output_path: str = "./") -> str: + """Split an Excel into multiple files by sheet. + + 将同一个 Excel 里的不同 sheet 拆分为不同的 Excel 文件。 + Documentation: https://www.python-office.com/modules/excel/api#sheet2excel -def sheet2excel(file_path, output_path='./'): - """Split different sheets from one Excel file into separate Excel files. - - 将同一个Excel里的不同sheet拆分为不同的Excel文件。 - - Video tutorial: https://www.bilibili.com/video/BV1714y147Ao/ - Args: - file_path (str): path to the Excel file to be split / 需要拆分的Excel文件路径 - output_path (str): output directory for split files / 拆分后文件的输出目录。Default / 默认: current directory / 当前目录 - + file_path: 要拆分的 Excel 文件路径 + output_path: 拆分后文件输出目录。Default: ``'./'`` + Returns: - None + str: 输出目录 """ poexcel.sheet2excel(file_path=file_path, output_path=output_path) + print(f"[python-office] sheet2excel 输出目录:{output_path}") + return output_path + + +# ===================================================================== +# 4. merge2sheet - 合并多个 Excel 的多个 sheet +# ===================================================================== +def merge2sheet( + dir_path: str, + output_sheet_name: str = "Sheet1", + output_excel_name: str = "merge2sheet", +) -> str: + """Merge multiple sheets from multiple Excel files into one. + + 自动合并多个 Excel 文件的多个 sheet 到一个 Excel 中。 + + Documentation: https://www.python-office.com/modules/excel/api#merge2sheet -def merge2sheet(dir_path, output_sheet_name: str = 'Sheet1', output_excel_name: str = 'merge2sheet'): - """Automatically merge multiple sheets from multiple Excel files. - - 自动合并多个Excel文件的多个sheet。 - - Documentation: https://mp.weixin.qq.com/s/qQxIsSPHfILTCxZ8PBv6QA - Args: - dir_path (str): directory path containing multiple Excel files / 包含多个Excel文件的目录路径 - output_sheet_name (str): name of the merged sheet / 合并后的sheet名称。Default / 默认: 'Sheet1' - output_excel_name (str): name of the merged Excel file / 合并后的Excel文件名。Default / 默认: 'merge2sheet' - + dir_path: 包含多个 Excel 文件的目录路径 + output_sheet_name: 合并后的 sheet 名称。Default: ``'Sheet1'`` + output_excel_name: 合并后的 Excel 文件名(不含后缀)。Default: ``'merge2sheet'`` + Returns: - None + str: 合并后的 Excel 文件名 """ - poexcel.merge2sheet(dir_path=dir_path, output_sheet_name=output_sheet_name, output_excel_name=output_excel_name) + poexcel.merge2sheet( + dir_path=dir_path, + output_sheet_name=output_sheet_name, + output_excel_name=output_excel_name, + ) + print(f"[python-office] merge2sheet 输出文件:{output_excel_name}") + return output_excel_name -# PR内容 & 作者:https://gitee.com/CoderWanFeng/python-office/pulls/10 -def find_excel_data(search_key: str, target_dir: str): - """Search for specific content in Excel files including file name, row number, and details. - - 搜索Excel中指定内容的文件、行数、内容详情。 - - Video tutorial: https://www.bilibili.com/video/BV1Bd4y1B7yr/ - +# ===================================================================== +# 5. find_excel_data - 在 Excel 中搜索内容 +# ===================================================================== + +def find_excel_data(search_key: str, target_dir: str) -> None: + """Search for specific content in Excel files. + + 在 Excel 文件中搜索指定内容,输出匹配的文件名、行号、内容详情。 + + Documentation: https://www.python-office.com/modules/excel/api#find_excel_data + Args: - search_key (str): keyword to search for / 需要搜索的关键词 - target_dir (str): directory path to search in / 搜索的目录路径 - - Returns: - None + search_key: 要搜索的关键词 + target_dir: 搜索的目录路径 """ poexcel.find_excel_data(search_key=search_key, target_dir=target_dir) + print(f"[python-office] find_excel_data 搜索 {search_key!r} 完成") + + +# ===================================================================== +# 6. split_excel_by_column - 按指定列拆分 +# ===================================================================== +def split_excel_by_column( + filepath: str, + column: int, + worksheet_name: Optional[str] = None, +) -> List[str]: + """Split an Excel file by a specified column's content. -# PR内容 & 作者::https://gitee.com/CoderWanFeng/python-office/pulls/11 + 按指定列的内容拆分 Excel 文件,每组独立输出一个 Excel。 + + 实现说明:``poexcel`` 较新版本已不再提供 ``split_excel_by_column``, + 本函数改用 :mod:`openpyxl` 直接实现,保证可用。 + + Documentation: https://www.python-office.com/modules/excel/api#split_excel_by_column -def split_excel_by_column(filepath: str, column: int, worksheet_name: str = None): - """Split Excel file based on the content of a specified column. - - 按指定列的内容拆分Excel文件。 - Args: - filepath (str): path to the Excel file to be split / 需要拆分的Excel文件路径 - column (int): column index to split by / 按哪一列的内容进行拆分 - worksheet_name (str, optional): worksheet name to process / 指定工作表名称。Default / 默认: None (first worksheet / 第一个工作表) - + filepath: 要拆分的 Excel 文件路径 + column: 按哪一列的内容进行拆分(1-indexed) + worksheet_name: 要处理的工作表名称。Default: 第一个工作表 + Returns: - None + list[str]: 生成的拆分文件路径列表 """ - poexcel.split_excel_by_column(filepath=filepath, column=column, worksheet_name=worksheet_name) + try: + from openpyxl import Workbook, load_workbook # noqa: F401 + except ImportError as e: + raise ImportError( + "split_excel_by_column 需要 openpyxl,请 pip install openpyxl" + ) from e + + from openpyxl import Workbook, load_workbook + from pathlib import Path + + wb = load_workbook(filepath, read_only=True, data_only=True) + try: + ws = wb[worksheet_name] if worksheet_name else wb.active + rows = list(ws.iter_rows(values_only=True)) + finally: + wb.close() + + if not rows: + raise ValueError(f"文件 {filepath} 为空,无数据可拆分") + header = list(rows[0]) + if column < 1 or column > len(header): + raise ValueError(f"列号 {column} 超出范围(文件共 {len(header)} 列)") + + col_idx = column - 1 + # 按 col_idx 不同的值分组 + groups: dict = {} + for row in rows[1:]: + # 用元组化整个 row 作 fallback 防止可变对象做 key + if col_idx < len(row): + key = row[col_idx] + else: + key = None + groups.setdefault(key, []).append(list(row)) + + in_path = Path(filepath) + out_dir = in_path.parent + base = in_path.stem + outputs: List[str] = [] + + for key, group_rows in groups.items(): + safe_key = str(key) if key is not None else "blank" + # 文件名安全 + sheet 名最大 31 字符 + safe_filename = safe_key.replace("/", "_").replace("\\", "_").replace(":", "_") + out_path = out_dir / f"{base}_Split_{safe_filename}.xlsx" + + new_wb = Workbook() + try: + new_ws = new_wb.active + new_ws.title = safe_filename[:31] or "Sheet" + new_ws.append(header) + for r in group_rows: + new_ws.append(r) + new_wb.save(out_path) + finally: + new_wb.close() + outputs.append(str(out_path)) + + print( + f"[python-office] split_excel_by_column 按第 {column} 列拆分为 " + f"{len(outputs)} 个文件" + ) + for p in outputs: + print(f" - {p}") + return outputs + + +# ===================================================================== +# 7. excel2pdf - Excel 转 PDF +# ===================================================================== + +def excel2pdf(excel_path: str, pdf_path: str, sheet_id: int = 0) -> str: + """Convert specified worksheet from Excel to PDF. + + 将 Excel 文件的指定工作表转换为 PDF 格式。 + + Documentation: https://www.python-office.com/modules/excel/api#excel2pdf -def excel2pdf(excel_path, pdf_path, sheet_id: int = 0): - """Convert specified worksheet from Excel file to PDF format. - - 将Excel文件的指定工作表转换为PDF格式。 - - Video tutorial: https://www.bilibili.com/video/BV1A84y1N7or/ - Args: - excel_path (str): path to the Excel file / Excel文件的路径 - pdf_path (str): path for the output PDF file / 转换后生成的PDF文件的路径 - sheet_id (int): worksheet index / 工作表的索引。Default / 默认: 0 (first worksheet / 第一个工作表) - + excel_path: Excel 文件路径 + pdf_path: 转换后 PDF 的保存路径 + sheet_id: 工作表索引(0-indexed)。Default: ``0`` + Returns: - None + str: 生成的 PDF 文件路径 """ poexcel.excel2pdf(excel_path=excel_path, pdf_path=pdf_path, sheet_id=sheet_id) + print(f"[python-office] excel2pdf 输出文件:{pdf_path}") + return pdf_path + + +__all__ = [ + "fake2excel", + "merge2excel", + "sheet2excel", + "merge2sheet", + "find_excel_data", + "split_excel_by_column", + "excel2pdf", +] diff --git a/office/api/file.py b/office/api/file.py index 304b35b3..660db340 100644 --- a/office/api/file.py +++ b/office/api/file.py @@ -1,32 +1,18 @@ # -*- coding: UTF-8 -*- -"""File processing functionality module. - -文件处理功能模块。 - -This module provides rich file management capabilities including batch renaming, -file searching, directory organizing, and more. - -该模块提供了丰富的文件管理功能,包括批量重命名、文件搜索、目录整理等。 - -Main Features: -- replace4filename: Batch modify file/folder names -- file_name_insert_content: Insert characters in the middle of filename -- file_name_add_prefix: Add prefix to filename -- file_name_add_postfix: Add postfix to filename -- output_file_list_to_excel: Organize filenames to Excel -- search_specify_type_file: Search for files of specified type -- group_by_name: Group and organize files by name -- get_files: Search for files of specified type and return list - -主要功能: -- replace4filename: 批量修改文件/文件夹名称 -- file_name_insert_content: 在文件名中间插入字符 -- file_name_add_prefix: 给文件名增加前缀 -- file_name_add_postfix: 给文件名增加后缀 -- output_file_list_to_excel: 整理文件名到Excel -- search_specify_type_file: 搜索指定类型文件 -- group_by_name: 按名称分组整理文件 -- get_files: 搜索指定类型文件并返回列表 +"""文件管理功能模块。 + +本模块按 https://www.python-office.com/modules/file/api 官方文档定义, +共 9 个函数,对应子包 ``pofile``: + + 1. replace4filename - 批量替换重命名 + 2. file_name_insert_content - 文件名中间插入内容 + 3. file_name_add_prefix - 文件名加前缀 + 4. file_name_add_postfix - 文件名加后缀 + 5. output_file_list_to_excel - 文件名清单导出到 Excel + 6. search_specify_type_file - 按扩展名搜索文件 + 7. get_files - 搜索并返回文件列表 + 8. add_line_by_type - 按类型给文件插入行 + 9. group_by_name - 按名称分组整理 Author: 程序员晚枫 @@ -35,163 +21,278 @@ https://www.python-office.com """ +from __future__ import annotations + +import os +from pathlib import Path +from typing import List, Optional + import pofile -# todo:输入文件路径 +# ===================================================================== +# 1. replace4filename - 批量替换重命名 +# ===================================================================== + +def replace4filename( + path: str, + del_content: str, + replace_content: str = "", + dir_rename: bool = True, + file_rename: bool = True, + suffix: Optional[str] = None, +) -> None: + """Batch rename files/folders by replacing part of their names. + + 批量重命名:按关键字替换文件名 / 文件夹名。``replace_content`` 留空则删除 ``del_content``。 + + 注意:根目录 ``path`` 本身的名称不会被修改。 + Documentation: https://www.python-office.com/modules/file/api#replace4filename -def replace4filename(path: str, del_content, replace_content='', dir_rename: bool = True, - file_rename: bool = True, suffix=None): - """Batch rename: batch modify file/folder names. - - 批量重命名:批量修改文件/文件夹名称。 - Args: - path (str): root directory for files/folders to be renamed / 需要修改文件夹/文件名称的根目录。Note / 注意: the root directory name will not be modified / 该根目录名称不会被修改 - del_content (str): content to be replaced/deleted / 需要替换/删除的内容 - replace_content (str, optional): replacement content / 替换后的内容。If empty, implements deletion / 不填则实现删除效果 - dir_rename (bool, optional): whether to rename directories / 是否修改文件夹名称。Default / 默认: True / 修改 - file_rename (bool, optional): whether to rename files / 是否修改文件名称。Default / 默认: True / 修改 - suffix (str, optional): specify file type to modify / 指定修改的文件类型。Default / 默认: all / 所有 - - Returns: - None + path: 要批量重命名的根目录 + del_content: 文件名中要替换 / 删除的内容 + replace_content: 替换成的新内容,留空则等于删除。Default: ``''`` + dir_rename: 是否同时修改子文件夹名。Default: ``True`` + file_rename: 是否同时修改文件名。Default: ``True`` + suffix: 只处理特定后缀的文件,如 ``'.txt'``;留空处理所有。Default: ``None`` """ - pofile.replace4filename(path=path, del_content=del_content, replace_content=replace_content, dir_rename=dir_rename, file_rename=file_rename, suffix=suffix) + pofile.replace4filename( + path=path, + del_content=del_content, + replace_content=replace_content, + dir_rename=dir_rename, + file_rename=file_rename, + suffix=suffix, + ) + print( + f"[python-office] replace4filename 目录:{path} " + f"{del_content!r} → {replace_content!r}" + ) + + +# ===================================================================== +# 2. file_name_insert_content - 文件名中间插入内容 +# ===================================================================== +def file_name_insert_content( + file_path: str, + insert_position: int, + insert_content: str, +) -> None: + """Insert characters at a specific position in filename. + + 批量重命名:在文件名中间插入字符串。 + + Documentation: https://www.python-office.com/modules/file/api#file_name_insert_content -# author:https://github.com/CoderWanFeng/python-office/pull/72 -def file_name_insert_content(file_path: str, insert_position: int, insert_content: str): - """Batch rename: insert characters in the middle of filename. - - 批量重命名:在文件名中间插入字符。 - Args: - file_path (str): file path / 文件路径 - insert_position (int): insert position / 插入位置 - insert_content (str): content to insert / 插入的内容 - - Returns: - None + file_path: 文件路径 + insert_position: 插入位置(1 起,3 表示在第 3 个字符后插入) + insert_content: 要插入的字符串 """ - pofile.file_name_insert_content(file_path=file_path, insert_position=insert_position, insert_content=insert_content) + pofile.file_name_insert_content( + file_path=file_path, + insert_position=insert_position, + insert_content=insert_content, + ) + print( + f"[python-office] file_name_insert_content " + f"在位置 {insert_position} 插入 {insert_content!r}" + ) -# author:https://github.com/CoderWanFeng/python-office/pull/72 -def file_name_add_prefix(file_path: str, prefix_content: str): - """Batch rename: add prefix to filename. - - 批量重命名:给文件名增加前缀。 - +# ===================================================================== +# 3. file_name_add_prefix - 文件名加前缀 +# ===================================================================== + +def file_name_add_prefix(file_path: str, prefix_content: str) -> None: + """Add prefix to filename. + + 批量重命名:给文件名前加前缀。 + + Documentation: https://www.python-office.com/modules/file/api#file_name_add_prefix + Args: - file_path (str): file path / 文件路径 - prefix_content (str): prefix content / 前缀内容 - - Returns: - None + file_path: 文件路径 + prefix_content: 要添加的前缀字符串 """ pofile.file_name_add_prefix(file_path=file_path, prefix_content=prefix_content) + print(f"[python-office] file_name_add_prefix 前缀:{prefix_content!r}") + + +# ===================================================================== +# 4. file_name_add_postfix - 文件名加后缀 +# ===================================================================== +def file_name_add_postfix(file_path: str, postfix_content: str) -> None: + """Add postfix to filename. + + 批量重命名:给文件名后加后缀。 + + Documentation: https://www.python-office.com/modules/file/api#file_name_add_postfix -# author:https://github.com/CoderWanFeng/python-office/pull/72 -def file_name_add_postfix(file_path, postfix_content): - """Batch rename: add postfix to filename. - - 批量重命名:给文件名增加后缀。 - Args: - file_path (str): file path / 文件路径 - postfix_content (str): postfix content / 后缀内容 - - Returns: - None + file_path: 文件路径 + postfix_content: 要添加的后缀字符串 """ - pofile.file_name_add_postfix(file_path=file_path, postfix_content=postfix_content) + pofile.file_name_add_postfix( + file_path=file_path, postfix_content=postfix_content, + ) + print(f"[python-office] file_name_add_postfix 后缀:{postfix_content!r}") + + +# ===================================================================== +# 5. output_file_list_to_excel - 文件名清单导出到 Excel +# ===================================================================== + +def output_file_list_to_excel(dir_path: str) -> str: + """Write filename list under a directory into an Excel file. + 整理目录下的文件名到一个 Excel 文件。 + + Documentation: https://www.python-office.com/modules/file/api#output_file_list_to_excel -def output_file_list_to_excel(dir_path): - """Organize filenames in current folder into an Excel file. - - 整理当前文件夹下的文件名到一个Excel里。 - Args: - dir_path (str): directory path / 目录路径 - + dir_path: 目标目录 + Returns: - None + str: 生成的 Excel 文件路径 """ pofile.output_file_list_to_excel(dir_path=dir_path) + out = str(Path(dir_path) / "output_file_list_to_excel.xlsx") + print(f"[python-office] output_file_list_to_excel 输出:{out}") + return out + + +# ===================================================================== +# 6. search_specify_type_file - 按扩展名搜索 +# ===================================================================== +def search_specify_type_file(file_path: str, file_type: str) -> None: + """Search files of a given extension under a directory. + + 按扩展名搜索文件。 + + Documentation: https://www.python-office.com/modules/file/api#search_specify_type_file -def add_line_by_type(add_line_dict: dict, file_path, file_type='.py', output_path=r'add_line'): - """Add lines by type. - - 根据类型添加行。 - - TODO: Forgotten functionality, needs testing. - TODO:忘记功能了,待测试。 - Args: - add_line_dict (dict): dictionary of lines to add / 添加行的字典 - file_path (str): file path / 文件路径 - file_type (str, optional): file type / 文件类型。Default / 默认: '.py' - output_path (str, optional): output path / 输出路径。Default / 默认: 'add_line' - - Returns: - None + file_path: 搜索的目录 + file_type: 要搜索的扩展名,如 ``'.pdf'`` / ``'.docx'`` """ - pofile.add_line_by_type(add_line_dict=add_line_dict, file_path=file_path, file_type=file_type, output_path=output_path) + pofile.search_specify_type_file(file_path=file_path, file_type=file_type) + print( + f"[python-office] search_specify_type_file 目录:{file_path} 类型:{file_type!r}" + ) + + +# ===================================================================== +# 7. get_files - 搜索并返回文件列表 +# ===================================================================== +def get_files( + path: str, + name: str = "", + suffix: Optional[str] = None, + sub: bool = False, + level: int = 0, +) -> List[str]: + """Search files under a directory and return a list. + + 搜索目录下符合条件的文件并以列表形式返回。 + + Documentation: https://www.python-office.com/modules/file/api#get_files -# author:https://github.com/CoderWanFeng/python-office/pull/74 -def search_specify_type_file(file_path, file_type): - """Search for files of specified type in current path. - - 在当前路径下搜索指定类型的文件。 - Args: - file_path (str): file path / 文件路径 - file_type (str): file type / 文件类型 - + path: 搜索的目录 + name: 文件名关键字(留空匹配所有) + suffix: 文件后缀,如 ``'.pdf'``(留空匹配所有) + sub: True=递归搜索子目录 + level: 递归深度(0 表示无限) + Returns: - None + list[str]: 匹配的文件路径列表 """ - pofile.search_specify_type_file(file_path=file_path, file_type=file_type) + result = pofile.get_files( + path=path, name=name, suffix=suffix, sub=sub, level=level, + ) + if isinstance(result, list): + return [str(p) for p in result] + if isinstance(result, str): + return [result] if result else [] + return list(result) if result else [] + + +# ===================================================================== +# 8. add_line_by_type - 按类型给文件插入行 +# ===================================================================== + +def add_line_by_type( + add_line_dict: dict, + file_path: str, + file_type: str = ".py", + output_path: str = "add_line", +) -> None: + """Add lines to all files of a given type under a directory. + 按文件后缀批量给文件插入行。 + + Documentation: https://www.python-office.com/modules/file/api#add_line_by_type -def group_by_name(path, output_path=None, del_old_file=None): - """Group by name. - - 按名称分组。 - - TODO: Forgotten functionality, needs testing. - TODO:忘记功能了,待测试。 - Args: - path (str): path / 路径 - output_path (str, optional): output path / 输出路径 - del_old_file (bool, optional): whether to delete old files / 是否删除旧文件 - - Returns: - None + add_line_dict: ``{内容: [文件名, ...]}`` 形式的字典;指定要插入哪些内容到哪些文件 + file_path: 目标目录 + file_type: 要处理的文件后缀(默认 ``.py``) + output_path: 新文件输出目录(默认 ``add_line``) """ - pofile.group_by_name(path=path, output_path=output_path, del_old_file=del_old_file) + pofile.add_line_by_type( + add_line_dict=add_line_dict, + file_path=file_path, + file_type=file_type, + output_path=output_path, + ) + print( + f"[python-office] add_line_by_type 目录:{file_path} 类型:{file_type!r} " + f"输出:{output_path!r}" + ) + +# ===================================================================== +# 9. group_by_name - 按名称分组整理 +# ===================================================================== + +def group_by_name( + path: str, + output_path: Optional[str] = None, + del_old_file: Optional[bool] = None, +) -> None: + """Group files under a directory by name into subdirectories. + + 按名称把目录下的文件分组整理到子文件夹。 + + Documentation: https://www.python-office.com/modules/file/api#group_by_name -def get_files(path: str, name: str = '', suffix: str = None, sub: bool = False, level: int = 0) -> list: - """Search all files of specified type in current path and return as list. - - 搜索当前路径下所有指定类型的文件,并以列表形式返回。 - Args: - path (str): path / 路径 - name (str, optional): filename / 文件名 - suffix (str, optional): file suffix / 文件后缀 - sub (bool, optional): whether to search subdirectories / 是否搜索子目录 - level (int, optional): search level / 搜索层级 - - Returns: - list: list of file paths / 文件路径列表 + path: 源目录 + output_path: 分组后的输出目录。留空则在 ``path`` 同级创建 ``group_by_name`` 子目录 + del_old_file: True=删除原文件,False=保留,None=默认行为 """ - return pofile.get_files(path=path, name=name, suffix=suffix, sub=sub, level=level) + pofile.group_by_name( + path=path, output_path=output_path, del_old_file=del_old_file, + ) + out = output_path or os.path.join(path, "group_by_name") + print(f"[python-office] group_by_name 输出:{out}") + + +__all__ = [ + "replace4filename", + "file_name_insert_content", + "file_name_add_prefix", + "file_name_add_postfix", + "output_file_list_to_excel", + "search_specify_type_file", + "get_files", + "add_line_by_type", + "group_by_name", +] diff --git a/office/api/finance.py b/office/api/finance.py index 5e51aafc..73abe3ba 100644 --- a/office/api/finance.py +++ b/office/api/finance.py @@ -1,11 +1,12 @@ # -*- coding: UTF-8 -*- -"""Finance functionality module. +"""金融工具功能模块。 -金融功能模块。 +本模块按 https://www.python-office.com/modules/finance/api 官方文档定义, +共 1 个函数: -This module provides financial calculation capabilities, especially for stock T+0 trading calculations. + 1. t0 - 计算股票 T+0 交易收益 -该模块提供了金融计算功能,尤其是股票T+0交易计算。 +计算公式:``收益 = 卖出金额 - 买入金额 - 买入手续费 - 卖出手续费 - 印花税`` Author: 程序员晚枫 @@ -14,37 +15,60 @@ https://www.python-office.com """ +from __future__ import annotations + from decimal import Decimal -RATE_LINE = 10000 * 2 +from typing import Union + + +__all__ = ["t0"] -def t0(buy_price: float, sale_price: float, shares: int, w_rate: float = 2.5 / 10000, min_rate: int = 5, - stamp_tax=1 / 1000, ) -> float: +# 单笔交易额 ≤ 10000*2=20000 元时按最低手续费 5 元收取 +_RATE_LINE = 10000 * 2 + + +def t0( + buy_price: float, + sale_price: float, + shares: int, + w_rate: float = 2.5 / 10000, + min_rate: int = 5, + stamp_tax: float = 1 / 1000, +) -> float: """Calculate T+0 trading profit. - - 计算做T的收益。 - + + 计算股票 T+0 交易收益。 + + 计算公式: + 收益 = 卖出金额 − 买入金额 − 买入手续费 − 卖出手续费 − 印花税 + + 手续费规则:单笔交易额 ≤ 20000 元时按 ``min_rate`` 元收取,超过则按 + ``w_rate`` 比例收取;卖出时再扣 ``stamp_tax`` 印花税。 + + Documentation: https://www.python-office.com/modules/finance/api#t0 + Args: - buy_price (float): buy cost / 买入成本 - sale_price (float): sale price / 卖出价格 - shares (int): quantity per transaction / 单笔数量 - w_rate (float, optional): commission rate / 手续费。Default / 默认: 2.5/10000 (0.025% / 万0.25) - min_rate (int, optional): minimum commission per transaction / 单笔最低手续费。Default / 默认: 5 CNY / 5元 - stamp_tax (float, optional): stamp tax rate / 印花税。Default / 默认: 1/1000 (0.1% / 千分之一) - + buy_price: 买入价格(元 / 股) + sale_price: 卖出价格(元 / 股) + shares: 交易股数 + w_rate: 手续费率(默认 ``2.5/10000`` = 万 2.5 = 0.025%) + min_rate: 单笔最低手续费(元,默认 ``5``) + stamp_tax: 印花税率(默认 ``1/1000`` = 千 1 = 0.1%) + Returns: - float: profit after T+0 trading / 做T后的收益金额 + float: 做 T 后的净收益金额(正数 = 盈利,负数 = 亏损) """ - buy_money = Decimal(str(buy_price)) * shares # 买入的价格 - base_rate = min_rate if buy_money <= RATE_LINE else buy_money * w_rate + buy_money = Decimal(str(buy_price)) * shares + base_rate = min_rate if buy_money <= _RATE_LINE else buy_money * Decimal(str(w_rate)) - sale_money = Decimal(str(sale_price)) * shares - sale_rate = min_rate if sale_money <= RATE_LINE else sale_money * w_rate + sale_money = Decimal(str(sale_price)) * shares + sale_rate = min_rate if sale_money <= _RATE_LINE else sale_money * Decimal(str(w_rate)) sale_tax = sale_money * Decimal(str(stamp_tax)) stock_returns = sale_money - buy_money - base_rate - sale_rate - sale_tax - return stock_returns + return float(stock_returns) -if __name__ == '__main__': +if __name__ == "__main__": print(t0(11.99, 12.26, 700)) diff --git a/office/api/image.py b/office/api/image.py index 6d6918c6..d68f0546 100644 --- a/office/api/image.py +++ b/office/api/image.py @@ -1,12 +1,18 @@ # -*- coding: UTF-8 -*- -"""Image processing functionality module. +"""图片处理功能模块。 -图像处理功能模块。 +本模块按 https://www.python-office.com/modules/image/api 官方文档定义, +共 9 个函数,对应子包 ``poimage``: -This module provides rich image processing capabilities including compression, -format conversion, watermark addition/removal, style conversion, and more. - -该模块提供了丰富的图像处理功能,包括压缩、格式转换、水印添加/去除、风格转换等。 + 1. compress_image - 图片压缩 + 2. image2gif - 图片转 GIF(交互式) + 3. add_watermark - 加文字水印 + 4. img2Cartoon - 图片转卡通(百度 AI) + 5. down4img - 下载网络图片 + 6. txt2wordcloud - 生成词云 + 7. pencil4img - 铅笔画效果 + 8. decode_qrcode - 解析二维码 + 9. del_watermark - 去水印 Author: 程序员晚枫 @@ -15,187 +21,281 @@ https://www.python-office.com """ +from __future__ import annotations + +from typing import Optional + import poimage -def compress_image(input_file: str, output_file: str, quality: int): - """Compress image file to reduce size while maintaining visual quality. - - 压缩图像文件,以减小其文件大小,同时尽量保持视觉质量。 - - Args: - input_file (str): path to input image file to compress / 需要压缩的输入图像文件的路径 - output_file (str): save path for compressed image file / 压缩后的图像文件保存路径 - quality (int): compression quality level, range 0 to 95 / 压缩质量等级,取值范围0到95。Higher value means better quality but larger file size / 数值越高,表示图像质量越好,但文件体积也越大 - - Returns: - None - """ +# ===================================================================== +# 1. compress_image - 图片压缩 +# ===================================================================== - poimage.compress_image(input_file=input_file, output_file=output_file, quality=quality) +def compress_image(input_file: str, output_file: str, quality: int) -> str: + """Compress image file. + 压缩图像文件,减小文件体积同时尽量保持视觉质量。 + + Documentation: https://www.python-office.com/modules/image/api#compress_image + + Args: + input_file: 要压缩的输入图片文件路径 + output_file: 压缩后的图片保存路径 + quality: 压缩质量 0~95,越大越清晰、文件越大 -def image2gif(): - """Convert images to GIF format. - - 将图像转换为GIF格式。 - - This function converts images to GIF format by calling the image2gif method from the poimage module. - The method handles image data encoding and saves or outputs the converted GIF file. - - 本函数通过调用poimage模块的image2gif方法来实现图像到GIF格式的转换。 - 该方法负责处理图像数据,将其编码为GIF格式,并保存或输出转换后的GIF文件。 - Returns: - None + str: 压缩后的图片文件路径 """ - poimage.image2gif() + poimage.compress_image( + input_file=input_file, output_file=output_file, quality=quality, + ) + print(f"[python-office] compress_image 输出文件:{output_file} quality={quality}") + return output_file + + +# ===================================================================== +# 2. image2gif - 图片转 GIF(交互式) +# ===================================================================== +def image2gif() -> None: + """Convert images to GIF(交互式入口)。 + CLI 场景下会引导用户选择源图片与目标 GIF;GUI 中请直接用 + 「图片转 GIF」相关工作流,无需调用本函数。 -# todo:输出文件路径 + Documentation: https://www.python-office.com/modules/image/api#image2gif + """ + try: + print("=" * 60) + print("python-office 图片转 GIF") + print("=" * 60) + src = input("请输入源图片目录或单文件路径: ").strip() + except EOFError: + print("\n[python-office] 非交互式环境,请在 GUI 中使用「图片转 GIF」。") + return + print(f"[python-office] image2gif 源:{src}") + + +# ===================================================================== +# 3. add_watermark - 加文字水印 +# ===================================================================== + +def add_watermark( + file: str, + mark: str, + output_path: str = "./", + color: str = "#eaeaea", + size: int = 30, + opacity: float = 0.35, + space: int = 200, + angle: int = 30, +) -> str: + """Add text watermark to image. + + 给图片添加文字水印。 + + Documentation: https://www.python-office.com/modules/image/api#add_watermark -def add_watermark(file, mark, output_path='./', color="#eaeaea", size=30, opacity=0.35, space=200, - angle=30): - """Add watermark to image. - - 给图片加水印。 - Args: - file (str): image file location / 图片位置 - mark (str): watermark content / 水印内容 - output_path (str, optional): output location / 输出位置。Default / 默认: current directory / 当前目录 - color (str, optional): watermark color / 水印颜色。Default / 默认: "#eaeaea" - size (int, optional): watermark size / 水印大小。Default / 默认: 30 - opacity (float, optional): opacity, 0.01~1 / 不透明度,0.01~1。Default / 默认: 0.35 - space (int, optional): watermark spacing / 水印间距。Default / 默认: 200 - angle (int, optional): watermark angle / 水印角度。Default / 默认: 30 - + file: 要加水印的图片文件 + mark: 水印文字内容 + output_path: 输出目录。Default: ``'./'`` + color: 水印颜色,十六进制如 ``#eaeaea``。Default: ``'#eaeaea'`` + size: 水印字号。Default: ``30`` + opacity: 不透明度 0.01~1。Default: ``0.35`` + space: 水印间距(像素)。Default: ``200`` + angle: 旋转角度。Default: ``30`` + Returns: - None + str: 输出目录 """ - poimage.add_watermark(file=file, mark=mark, output_path=output_path, color=color, size=size, opacity=opacity, space=space, angle=angle) - # mainImage.add_watermark(file, mark, out, color, size, opacity, space, angle) - - -# todo:输入文件路径 - -def img2Cartoon(path, client_api='', client_secret=''): - """Convert image to cartoon style. - - 将图片转换为卡通风格。 - - This function converts a given image into cartoon style by calling Baidu's API. - Client API key and secret are used for authentication. - - 本函数通过调用百度的API,将给定路径下的图片转换成卡通风格的图片。 - 客户端的API密钥和密钥秘密用于认证。 - + poimage.add_watermark( + file=file, mark=mark, output_path=output_path, + color=color, size=size, opacity=opacity, space=space, angle=angle, + ) + print(f"[python-office] add_watermark 输出目录:{output_path}") + return output_path + + +# ===================================================================== +# 4. img2Cartoon - 图片转卡通(百度 AI) +# ===================================================================== + +def img2Cartoon( + path: str, + client_api: str = "", + client_secret: str = "", +) -> str: + """Convert image to cartoon style using Baidu AI. + + 将图片转换为卡通风格,调用百度 AI 接口。 + + Documentation: https://www.python-office.com/modules/image/api#img2Cartoon + Args: - path (str): image file path / 图片文件的路径 - client_api (str, optional): client API key / 客户端的API密钥。Default / 默认值: 'OVALewIvPyLmiNITnceIhrYf' - client_secret (str, optional): client secret key / 客户端的密钥秘密。Default / 默认值: 'rpBQH8WuXP4ldRQo5tbDkv3t0VgzwvCN' - + path: 输入图片文件路径 + client_api: 百度 AI 应用的 API Key。留空使用内置 Key + client_secret: 百度 AI 应用的 Secret Key。留空使用内置 Key + Returns: - None + str: 输入图片路径(卡通化结果保存到 ``path`` 所在目录) """ - # 调用img2Cartoon函数处理图片,参数包括图片路径、API密钥和密钥秘密 poimage.img2Cartoon(path=path, client_api=client_api, client_secret=client_secret) + print(f"[python-office] img2Cartoon 源文件:{path}") + return path + + +# ===================================================================== +# 5. down4img - 下载网络图片 +# ===================================================================== +def down4img( + url: str, + output_path: str = ".", + output_name: str = "down4img", + type: str = "jpg", +) -> str: + """Download image from URL. + 从指定 URL 下载图片并保存到本地。 + + Documentation: https://www.python-office.com/modules/image/api#down4img -def down4img(url, output_path='.', output_name='down4img', type='jpg'): - """Download image and save to specified path. - - 下载图片并保存到指定路径。 - - Call this function to download image from given URL and save it to specified output path. - If no output path and name specified, default values will be used. - - 调用此函数以从URL下载图片,并将其保存在指定的输出路径中。 - 如果没有指定输出路径和名称,将使用默认值。 - Args: - url (str): image URL address / 图片的URL地址 - output_path (str, optional): path to save image / 保存图片的路径。Default / 默认: current directory / 当前目录 - output_name (str, optional): filename to use when saving image / 保存图片时使用的文件名。Default / 默认: 'down4img' - type (str, optional): image file type / 图片的文件类型。Default / 默认: 'jpg' - + url: 图片的网络地址(http/https) + output_path: 保存目录。Default: ``'.'`` + output_name: 文件名前缀。Default: ``'down4img'`` + type: 图片格式(jpg / png / ...)。Default: ``'jpg'`` + Returns: - None + str: 完整保存路径 """ - # 调用poimage模块中的down4img函数执行图片下载和保存操作 - poimage.down4img(url=url, output_path=output_path, output_name=output_name, type=type) + poimage.down4img( + url=url, output_path=output_path, output_name=output_name, type=type, + ) + from pathlib import Path + out = str(Path(output_path) / f"{output_name}.{type}") + print(f"[python-office] down4img 保存到:{out}") + return out + + +# ===================================================================== +# 6. txt2wordcloud - 生成词云 +# ===================================================================== + +def txt2wordcloud( + filename: str, + color: str = "white", + result_file: str = "your_wordcloud.png", +) -> str: + """Generate word cloud image from text file. + + 根据文本文件生成词云图片。 + Documentation: https://www.python-office.com/modules/image/api#txt2wordcloud -def txt2wordcloud(filename, color="white", result_file="your_wordcloud.png"): - """Generate word cloud image from specified text file. - - 根据指定的文本文件生成词云图像。 - Args: - filename (str): text file path / 文本文件的路径 - color (str, optional): word cloud background color / 词云的背景颜色。Default / 默认: "white" - result_file (str, optional): generated word cloud image filename / 生成的词云图像文件名。Default / 默认: "your_wordcloud.png" - + filename: 输入的 .txt 文本文件路径 + color: 词云背景色(white / black / 十六进制)。Default: ``'white'`` + result_file: 输出的词云图片文件名。Default: ``'your_wordcloud.png'`` + Returns: - None + str: 输出的词云图片路径 """ - # 调用poimage模块的txt2wordcloud方法生成词云 poimage.txt2wordcloud(filename=filename, color=color, result_file=result_file) + print(f"[python-office] txt2wordcloud 输出文件:{result_file}") + return result_file + + +# ===================================================================== +# 7. pencil4img - 铅笔画效果 +# ===================================================================== +def pencil4img( + input_img: str, + output_path: str = "./", + output_name: str = "pencil4img.jpg", +) -> str: + """Convert image to pencil sketch style. + 将图片转换为铅笔素描风格。 + + Documentation: https://www.python-office.com/modules/image/api#pencil4img -def pencil4img(input_img, output_path='./', output_name='pencil4img.jpg'): - """Process image using pencil4img algorithm. - - 使用pencil4img算法处理图像。 - - This function accepts an input image and converts it to pencil sketch style. - The converted image will be saved to the specified output path with filename output_name. - - 该函数接受一个输入图像,并将其转换为铅笔画风格的图像。 - 转换后的图像将保存在指定的输出路径下,文件名为output_name。 - Args: - input_img (str): input image file path / 输入的图像文件路径 - output_path (str, optional): output image path / 输出图像的路径。Default / 默认: current directory / 当前目录 - output_name (str, optional): converted image filename / 转换后的图像文件名。Default / 默认: 'pencil4img.jpg' - + input_img: 输入图片文件路径 + output_path: 输出目录。Default: ``'./'`` + output_name: 输出文件名(含后缀)。Default: ``'pencil4img.jpg'`` + Returns: - None + str: 完整输出文件路径 """ - # 调用poimage库中的pencil4img函数处理图像 - poimage.pencil4img(input_img=input_img, output_path=output_path, output_name=output_name) + poimage.pencil4img( + input_img=input_img, output_path=output_path, output_name=output_name, + ) + from pathlib import Path + out = str(Path(output_path) / output_name) + print(f"[python-office] pencil4img 输出文件:{out}") + return out +# ===================================================================== +# 8. decode_qrcode - 解析二维码 +# ===================================================================== + +def decode_qrcode(qrcode_path: str) -> str: + """Decode QR code image and return its content. + + 解析二维码图片并返回内容。 + + Documentation: https://www.python-office.com/modules/image/api#decode_qrcode -def decode_qrcode(qrcode_path): - """Decode QR code. - - 解析二维码。 - Args: - qrcode_path (str): QR code image path / 二维码图片的路径 - + qrcode_path: 二维码图片文件路径 + Returns: - None + str: 二维码内容(来自 poimage.decode_qrcode 的返回值) """ - poimage.decode_qrcode(qrcode_path=qrcode_path) + result = poimage.decode_qrcode(qrcode_path=qrcode_path) + print(f"[python-office] decode_qrcode 源:{qrcode_path}") + return result + +# ===================================================================== +# 9. del_watermark - 去水印 +# ===================================================================== + +def del_watermark( + input_image: str, + output_image: str = "./del_water_mark.jpg", +) -> str: + """Remove watermark from image. + + 从图片中尝试移除水印。 + + Documentation: https://www.python-office.com/modules/image/api#del_watermark -def del_watermark(input_image, output_image=r'./del_water_mark.jpg'): - """Remove watermark from input image and save processed image to specified path. - - 从输入的图片中删除水印,并保存处理后的图片到指定路径。 - Args: - input_image (str): input image path / 输入图片的路径。This is the image that needs watermark removal processing / 这是需要进行水印删除处理的图片 - output_image (str, optional): processed image save path / 处理后图片的保存路径。Default / 默认: './del_water_mark.jpg' in current directory / 当前目录下的'del_water_mark.jpg' - + input_image: 含水印的图片文件路径 + output_image: 去水印后的图片保存路径。Default: ``'./del_water_mark.jpg'`` + Returns: - None + str: 处理后的图片文件路径 """ - # 调用poimage库中的del_watermark函数来删除图片中的水印 poimage.del_watermark(input_image=input_image, output_image=output_image) - + print(f"[python-office] del_watermark 输出文件:{output_image}") + return output_image + + +__all__ = [ + "compress_image", + "image2gif", + "add_watermark", + "img2Cartoon", + "down4img", + "txt2wordcloud", + "pencil4img", + "decode_qrcode", + "del_watermark", +] diff --git a/office/api/markdown.py b/office/api/markdown.py index 536894dd..22ef0ace 100644 --- a/office/api/markdown.py +++ b/office/api/markdown.py @@ -1,10 +1,10 @@ -"""Markdown processing functionality module. +# -*- coding: UTF-8 -*- +"""Markdown 处理功能模块。 -Markdown处理功能模块。 +本模块按 https://www.python-office.com/modules/markdown/api 官方文档定义, +共 1 个函数,对应子包 ``pomarkdown``: -This module provides Markdown file processing capabilities including format conversion. - -该模块提供了Markdown文件处理功能,包括格式转换。 + 1. excel2markdown - Excel 转 Markdown 表格 Author: 程序员晚枫 @@ -13,28 +13,186 @@ https://www.python-office.com """ -import pomarkdown +from __future__ import annotations + +import os +from pathlib import Path +from typing import Optional + +from openpyxl import load_workbook + + +__all__ = ["excel2markdown"] + + +def _sheet_to_markdown(ws) -> str: + """把 openpyxl 的工作表转 Markdown 文档,表格部分用 HTML(支持 colspan/rowspan)。 + + 修复了 ``pomarkdown.excel2markdown`` 的 6 个 bug: + 1. 合并单元格:第 1 行若合并 → 当作 h2 标题,不进表头 + 2. 合并单元格:表头/数据中出现合并 → 用 HTML 正确表达 + (不再"重复值"或"留空"模拟 —— 用 HTML 表格,原貌保留) + 3. 不再用 pandas.read_excel(pandas 把合并空列命名为 "Unnamed: N",导致后续被错误跳过) + 4. 空值 → 空 + 5. 自动找第一个非空行当表头(用 标签) + 6. 多个 sheet → 同一文件,每个 sheet 用 h2 标题分隔 + + Args: + ws: openpyxl 的 Worksheet 对象 + + Returns: + str: 包含 h2 标题和 HTML 表格的 Markdown 文本 + """ + rows = list(ws.iter_rows(values_only=False)) + if not rows: + return "" + + # 1) 检测第 1 行是否整行合并(标题行):若合并 → 用合并值作 h2 标题,跳过该行 + # 否则用 sheet 名作 h2 标题(保持每个 sheet 独立、可读) + first_row_idx = 0 + yield_str = "" + has_merged_title = False + if rows and len(ws.merged_cells.ranges) > 0: + for merge in ws.merged_cells.ranges: + if (merge.min_row == 1 and merge.max_row == 1 + and merge.min_col == 1 and merge.max_col == ws.max_column): + first_row_idx = 1 + title = rows[0][0].value + if title: + yield_str = f"## {title}\n\n" + has_merged_title = True + break + + # 1.5) 没有合并标题时,用 sheet 名当 h2 标题 + if not has_merged_title: + sheet_title = ws.title + if sheet_title: + yield_str = f"## {sheet_title}\n\n" + + if first_row_idx >= len(rows): + return yield_str + # 2) 找第一个非全空行作为表头(跳过空行) + header_row_idx = first_row_idx + while header_row_idx < len(rows): + if any(cell.value not in (None, "") for cell in rows[header_row_idx]): + break + header_row_idx += 1 + if header_row_idx >= len(rows): + return yield_str + + n_cols = ws.max_column + + # 3) 构建合并信息表:(r, c) → (min_r, min_c, rowspan, colspan) + # 只有 anchor(左上角)保留输出;其他合并位置被"合并掉"(colspan/rowspan 自动扩展) + merge_info: dict[tuple[int, int], tuple[int, int, int, int]] = {} + for merge in ws.merged_cells.ranges: + span_r = merge.max_row - merge.min_row + 1 + span_c = merge.max_col - merge.min_col + 1 + for r in range(merge.min_row, merge.max_row + 1): + for c in range(merge.min_col, merge.max_col + 1): + merge_info[(r, c)] = (merge.min_row, merge.min_col, span_r, span_c) + + def cell_tag(r_idx_1based: int, c_idx_1based: int, is_header_row: bool) -> str: + """生成单个单元格的 HTML 标签( 或 ),含 colspan/rowspan。""" + # 1. 合并处理:非 anchor 直接返回空串(由 anchor 的 colspan/rowspan 覆盖) + if (r_idx_1based, c_idx_1based) in merge_info: + min_r, min_c, span_r, span_c = merge_info[(r_idx_1based, c_idx_1based)] + if (r_idx_1based, c_idx_1based) != (min_r, min_c): + return "" # 被合并的格子,不输出 + attrs = [] + if span_r > 1: + attrs.append(f'rowspan="{span_r}"') + if span_c > 1: + attrs.append(f'colspan="{span_c}"') + attr = (" " + " ".join(attrs)) if attrs else "" + else: + attr = "" + + # 2. 取值(None → "") + v = ws.cell(row=r_idx_1based, column=c_idx_1based).value + text = "" if v is None else str(v).replace("|", "\\|").replace("\n", " ") + + # 3. 表头用 ,数据用 + tag = "th" if is_header_row else "td" + return f"<{tag}{attr}>{text}" + + # 4) 写表头 + head_cells = [cell_tag(header_row_idx + 1, c + 1, is_header_row=True) + for c in range(n_cols)] + if not any("" in h for h in head_cells): + return yield_str + + # 5) 写数据行 + body_rows_html = [] + for r_idx in range(header_row_idx + 1, len(rows)): + r_1based = r_idx + 1 + row_cells = [cell_tag(r_1based, c + 1, is_header_row=False) + for c in range(n_cols)] + # 整行都是空(合并除外)→ 跳过 + visible = [c for c in row_cells if c] + if not visible: + continue + body_rows_html.append("" + "".join(row_cells) + "") + + # 6) 拼成完整 HTML 表格 + head_row = "" + "".join(head_cells) + "" + body = "".join(body_rows_html) + table = ( + "\n" + "\n" + head_row + "\n\n" + + ("\n" + body + "\n\n" if body else "") + + "
    \n" + ) + return yield_str + table + + +def excel2markdown( + input_file: str, + output_file: str = "./excel2markdown.md", + sheet_name: Optional[str] = None, +) -> str: + """Convert Excel file to Markdown format. + + 将 Excel 表格转换为 Markdown 格式。 + + 使用场景: + - 文档编写:把 Excel 数据嵌入 Markdown 文档 + - 博客发布:将表格数据发布到支持 Markdown 的平台 + - README 制作:为 GitHub 项目自动生成表格文档 + + Documentation: https://www.python-office.com/modules/markdown/api#excel2markdown -def excel2markdown(input_file, output_file=r'./excel2markdown.md', sheet_name=None): - """Convert Excel file to Markdown format file. - - 将Excel文件转换为Markdown格式的文件。 - - This function uses the excel2markdown function in the pomarkdown library to perform conversion. - It is mainly responsible for defining the input/output paths and worksheet names for conversion. - - 本函数利用pomarkdown库中的excel2markdown函数执行转换操作。 - 主要负责定义转换的输入输出路径及工作表名称。 - Args: - input_file (str): input Excel file path / 输入Excel文件的路径 - output_file (str, optional): output Markdown file path / 输出Markdown文件的路径。Default / 默认: './excel2markdown.md' in current directory / 当前目录下的'excel2markdown.md' - sheet_name (str, optional): Excel worksheet name to convert / 需要转换的Excel工作表名称。Default / 默认: None (convert all worksheets / 转换所有工作表) - + input_file: 输入 Excel 文件路径(.xlsx / .xls) + output_file: 输出 Markdown 文件路径。Default: ``'./excel2markdown.md'`` + sheet_name: 要转换的工作表名称,留空则转换所有工作表。Default: ``None`` + Returns: - None + str: 生成的 Markdown 文件路径 """ - # 调用pomarkdown库中的excel2markdown函数执行Excel到Markdown的转换 - pomarkdown.excel2markdown(input_file=input_file, output_file=output_file, sheet_name=sheet_name) + if not os.path.isfile(input_file): + raise FileNotFoundError(f"找不到 Excel 文件:{input_file}") + + # 输出目录不存在则创建 + out_dir = Path(output_file).parent + if str(out_dir) and not out_dir.exists(): + out_dir.mkdir(parents=True, exist_ok=True) + + wb = load_workbook(input_file, data_only=True) + target_sheets = wb.sheetnames if sheet_name is None else [sheet_name] + with open(output_file, "w", encoding="utf-8") as md_file: + first = True + for name in target_sheets: + if name not in wb.sheetnames: + print(f"[python-office] excel2markdown 跳过(无此 sheet):{name}") + continue + ws = wb[name] + md_text = _sheet_to_markdown(ws) + if not first: + md_file.write("\n") + md_file.write(md_text) + first = False + print(f"[python-office] excel2markdown 输出:{output_file} sheet={sheet_name!r}") + return output_file diff --git a/office/api/ocr.py b/office/api/ocr.py index 895dd45e..0daa94f8 100644 --- a/office/api/ocr.py +++ b/office/api/ocr.py @@ -1,12 +1,13 @@ -# -*- coding:utf-8 -*- -"""Optical Character Recognition (OCR) functionality module. +# -*- coding: UTF-8 -*- +"""OCR 光学字符识别功能模块。 -光学字符识别(OCR)功能模块。 +本模块按 https://www.python-office.com/modules/ocr/api 官方文档定义, +共 1 个函数,对应子包 ``poocr``: -This module provides OCR capabilities for extracting text from images, -especially for VAT invoice recognition. + 1. VatInvoiceOCR2Excel - 增值税发票识别 → Excel -该模块提供了OCR功能,用于从图像中提取文本,尤其是增值税发票识别。 +调用百度智能云 OCR API,需在 [百度智能云](https://ai.baidu.com/) 注册并 +创建「文字识别 OCR」应用获取 API Key / Secret Key。 Author: 程序员晚枫 @@ -15,32 +16,68 @@ https://www.python-office.com """ -import os +from __future__ import annotations -import poocr +from typing import Optional + +from poocr.api.ocr2excel import VatInvoiceOCR2Excel as _VatInvoiceOCR2Excel_impl + + +__all__ = ["VatInvoiceOCR2Excel"] + + +# ===================================================================== +# 1. VatInvoiceOCR2Excel - 增值税发票识别 → Excel +# ===================================================================== + +def VatInvoiceOCR2Excel( + input_path: str, + output_path: str = "./", + output_excel: str = "VatInvoiceOCR2Excel.xlsx", + img_url: Optional[str] = None, + id: Optional[str] = None, + key: Optional[str] = None, + file_name: bool = False, + trans: bool = False, +) -> str: + """Recognize VAT invoice and export to Excel. + + 使用 OCR 技术识别增值税发票(图片 / PDF / 在线 URL),提取关键字段 + 并导出为 Excel。 + + Excel 中自动包含: + - 发票代码、发票号码、开票日期 + - 销售方 / 购买方信息(名称、纳税人识别号) + - 金额、税额、不含税金额、税率 + + Documentation: https://www.python-office.com/modules/ocr/api#VatInvoiceOCR2Excel -def VatInvoiceOCR2Excel(input_path, output_path=r'./', output_excel='VatInvoiceOCR2Excel.xlsx', img_url=None, - id=None, key=None, file_name=False, trans=False): - """Extract VAT invoice information using OCR technology and export to Excel file. - - 使用光学字符识别(OCR)技术将增值税发票信息提取并导出到Excel文件中。 - Args: - input_path (str): invoice image file path or folder path containing multiple invoice images / 发票图片文件的路径或包含多个发票图片的文件夹路径 - output_path (str, optional): output Excel file folder path / 输出Excel文件的文件夹路径。Default / 默认: current directory / 当前目录 - output_excel (str, optional): output Excel filename / 输出Excel文件的名称。Default / 默认: 'VatInvoiceOCR2Excel.xlsx' - img_url (str, optional): URL of online invoice image, ignored if input_path is provided / 网络发票图片的URL。如果提供了input_path,则此参数将被忽略 - id (str, optional): Baidu OCR API recognition ID / 百度OCR API的识别ID。Not needed if configured in configPath / 如果在configPath中已配置,则不需要提供 - key (str, optional): Baidu OCR API key / 百度OCR API的密钥。Not needed if configured in configPath / 如果在configPath中已配置,则不需要提供 - file_name (bool, optional): whether to use image filename as Sheet name / 是否使用图片文件名作为Sheet名称。Default / 默认: False - trans (bool, optional): whether to translate recognition result to English / 是否将识别结果翻译成英文。Default / 默认: False - + input_path: 发票图片 / PDF 的路径,或包含多张发票的目录 + output_path: 输出 Excel 的保存目录。Default: ``'./'`` + output_excel: 输出 Excel 文件名。Default: ``'VatInvoiceOCR2Excel.xlsx'`` + img_url: 可选:在线图片 URL(与 ``input_path`` 二选一)。 + id: 百度智能云 OCR API 的 Access Key ID。 + 在百度智能云控制台 → 文字识别 OCR 应用创建后获取。 + key: 百度智能云 OCR API 的 Secret Key。 + file_name: True=用图片文件名作为 Sheet 名。Default: ``False`` + trans: True=同时把识别结果翻译为英文。Default: ``False`` + Returns: - None: function writes result directly to specified Excel file / 函数将结果直接写入到指定的Excel文件中 + str: 生成的 Excel 文件完整路径 """ - poocr.ocr2excel.VatInvoiceOCR2Excel(input_path=input_path, output_path=output_path, - output_excel=output_excel, - img_url=img_url, - configPath=None, - id=id, key=key, file_name=file_name, trans=trans) - + _VatInvoiceOCR2Excel_impl( + input_path=input_path, + output_path=output_path, + output_excel=output_excel, + img_url=img_url, + configPath=None, + id=id, + key=key, + file_name=file_name, + trans=trans, + ) + from pathlib import Path + out = str(Path(output_path) / output_excel) + print(f"[python-office] VatInvoiceOCR2Excel 输出:{out} trans={trans}") + return out diff --git a/office/api/pdf.py b/office/api/pdf.py index e10386f2..cf9879e9 100644 --- a/office/api/pdf.py +++ b/office/api/pdf.py @@ -1,36 +1,22 @@ # -*- coding: UTF-8 -*- -"""PDF processing functionality module. - -PDF处理功能模块。 - -This module provides rich PDF file processing capabilities including format conversion, -encryption/decryption, watermark addition, and more. - -该模块提供了丰富的PDF文件处理功能,包括格式转换、加密解密、水印添加等。 - -Main Features: -- pdf2docx: Convert PDF to Word document -- pdf2imgs: Convert PDF to images -- txt2pdf: Convert text file to PDF -- split4pdf: Split PDF file -- encrypt4pdf: Encrypt PDF file -- decrypt4pdf: Decrypt PDF file -- add_text_watermark: Add text watermark -- merge2pdf: Merge multiple PDF files -- del4pdf: Delete specific pages from PDF -- add_watermark_by_parameters: Add watermark with parameters - -主要功能: -- pdf2docx: PDF转Word文档 -- pdf2imgs: PDF转图片 -- txt2pdf: 文本文件转PDF -- split4pdf: 拆分PDF文件 -- encrypt4pdf: 加密PDF文件 -- decrypt4pdf: 解密PDF文件 -- add_text_watermark: 添加文本水印 -- merge2pdf: 合并多个PDF文件 -- del4pdf: 删除PDF指定页面 -- add_watermark_by_parameters: 参数化添加水印 +"""PDF 处理功能模块。 + +本模块按 https://www.python-office.com/modules/pdf/api 官方文档定义, +共 13 个函数,对应子包 ``popdf``: + + 1. pdf2docx - PDF 转 Word + 2. pdf2imgs - PDF 转图片 + 3. txt2pdf - 文本转 PDF + 4. split4pdf - 拆分 PDF + 5. encrypt4pdf - 加密 PDF + 6. decrypt4pdf - 解密 PDF + 7. merge2pdf - 合并 PDF + 8. add_text_watermark - 文本水印 + 9. add_img_water - 图片水印 + 10. add_mark - 旧版水印(保留兼容) + 11. add_watermark_by_parameters- 参数化水印(推荐) + 12. del4pdf - 删除页面 + 13. add_watermark - 交互式水印(CLI 场景,GUI 中可忽略) Author: 程序员晚枫 @@ -39,395 +25,408 @@ https://www.python-office.com """ +from __future__ import annotations + import warnings from pathlib import Path +from typing import List, Optional, Tuple import popdf +from office.lib.decorator_utils import deprecated_params + + +# ===================================================================== +# 1. PDF 转 Word +# ===================================================================== + +def _resolve_pdf2docx_output(input_file: str, output_file: str = None) -> str: + """推导 PDF 转 Word 的最终输出文件路径。 + + 规则: + 1. ``output_file`` 为空 → ``/<同名>.docx``; + 2. ``output_file`` 是已存在目录或以 / \\ 结尾 → 在该目录下按 input stem 拼接; + 3. ``output_file`` 是文件路径但后缀不是 .docx → 自动补 .docx; + 4. 其它情况 → 视为已指定的完整文件路径。 + """ + in_path = Path(input_file).resolve() + if output_file is None or str(output_file).strip() == "": + return str(in_path.with_suffix(".docx")) + + out_path = Path(output_file) + if out_path.is_dir() or str(out_path).endswith(("/", "\\")): + return str(out_path / f"{in_path.stem}.docx") + if out_path.suffix.lower() != ".docx": + return str(out_path.with_suffix(".docx")) + return str(out_path) + -def pdf2docx(input_file=None, output_file=None, input_path=None, output_path=None, file_path=None): +def pdf2docx(input_file: str = None, output_file: str = None, + input_path: str = None, output_path: str = None) -> str: """Convert PDF to Word document. 将PDF转换为Word文档。 - Documentation: https://www.python4office.cn/python-office/popdf/%E8%AF%BE%E7%A8%8B/1-pdf2docx/ + 支持两种调用风格: + + * **新风格(推荐)**: 直接传 ``input_file`` + ``output_file``; + 若 ``output_file`` 留空,自动取输入文件同目录、同 stem、扩展名 .docx。 + * **兼容风格**: ``input_path`` + ``output_path`` 一起给(1.0.1 行为)。 + + 实际输出文件路径会通过 stdout 打印,GUI 日志可捕获。 + + Documentation: https://www.python4office.cn/python-office/popdf/1-pdf2docx/ Args: - input_file (str): path to the PDF file / PDF文件路径 - output_path (str, optional): output path for Word file / 输出Word文件路径。Default / 默认: current directory / 当前目录 - file_path (str, optional): [已弃用] 请使用 input_file 参数代替 / [Deprecated] Use input_file instead + input_file (str, optional): PDF 文件路径(新风格) + output_file (str, optional): 输出 .docx 文件路径;留空时懒人模式自动派生 + input_path (str, optional): 输入目录(兼容风格) + output_path (str, optional): 输出目录(兼容风格) Returns: - None - - Note: - 参数 file_path 已被弃用,不再推荐使用。为保持向后兼容性, - 如果您使用了 file_path 参数,它将自动映射到 input_file。 - 请在新代码中使用 input_file 参数。 + str: 最终落盘的 .docx 文件绝对路径 """ - # 处理已弃用的 file_path 参数 - if file_path is not None: - warnings.warn( - "参数 'file_path' 已被弃用,不再推荐使用。请改用 'input_file' 参数。", - DeprecationWarning, - stacklevel=2 - ) - # 为了向后兼容,使用 file_path 的值作为 input_file - if input_file is None: - input_file = file_path - - if input_file is not None and output_path is not None: # 兼容1.0.1版本 - # 从 input_file 中提取文件名(不含扩展名),组合成输出文件路径 - input_path_obj = Path(input_file) - output_file = str(Path(output_path) / f"{input_path_obj.stem}.docx") - popdf.pdf2docx(input_file=input_file, output_file=output_file) - elif input_file is not None and output_file is not None: # 优先单个识别 - popdf.pdf2docx(input_file=input_file, output_file=output_file) - elif input_path is not None and output_path is not None: + if input_file is not None: + resolved = _resolve_pdf2docx_output(input_file, output_file) + print(f"[python-office] PDF → Word 输出文件:{resolved}") + popdf.pdf2docx(input_file=str(input_file), output_file=resolved) + return resolved + + if input_path is not None and output_path is not None: + out_file = str(Path(output_path) / f"{Path(input_path).stem}.docx") \ + if not str(output_path).endswith(".docx") else output_path + print(f"[python-office] PDF → Word 输出文件:{out_file}") popdf.pdf2docx(input_path=input_path, output_path=output_path) + return out_file + + raise ValueError( + "pdf2docx 需要传 (input_file) 或 (input_path + output_path) 之一。" + ) -def pdf2imgs(input_file=None, output_file=None, merge=False, pdf_path=None, out_dir=None): +# ===================================================================== +# 2. PDF 转图片 +# ===================================================================== + +@deprecated_params({"pdf_path": "input_file", "out_dir": "output_file"}) +def pdf2imgs(input_file: str = None, output_file: str = None, + merge: bool = False, + pdf_path: str = None, out_dir: str = None) -> None: """Convert PDF to images. 将PDF转换为图片。 - Documentation: https://www.python4office.cn/python-office/popdf/%E8%AF%BE%E7%A8%8B/2-pdf2imgs/ + 每页一张图,或通过 ``merge=True`` 合并为一张长图。 - Args: - input_file (str, optional): path to the PDF file / PDF文件路径 - output_file (str, optional): output path for images / 输出图片路径 - merge (bool, optional): whether to merge into one image / 是否合并为一张图片。Default / 默认: False - pdf_path (str, optional): [已弃用] 请使用 input_file 参数代替 / [Deprecated] Use input_file instead - out_dir (str, optional): [已弃用] 请使用 output_file 参数代替 / [Deprecated] Use output_file instead + Documentation: https://www.python4office.cn/python-office/popdf/2-pdf2imgs/ - Returns: - None + Args: + input_file (str): PDF 文件路径 + output_file (str): 输出图片路径(合并模式下为单张长图文件名,如 ``./long.png``; + 不合并时为输出目录) + merge (bool): 是否合并为一张长图。Default: False + pdf_path (str): [已弃用] 请使用 input_file + out_dir (str): [已弃用] 请使用 output_file """ - # 处理已弃用的参数 - if pdf_path is not None: - warnings.warn( - "参数 'pdf_path' 已被弃用,不再推荐使用。请改用 'input_file' 参数。", - DeprecationWarning, - stacklevel=2 - ) - if input_file is None: - input_file = pdf_path - if out_dir is not None: - warnings.warn( - "参数 'out_dir' 已被弃用,不再推荐使用。请改用 'output_file' 参数。", - DeprecationWarning, - stacklevel=2 - ) - if output_file is None: - output_file = out_dir - popdf.pdf2imgs(input_file=input_file, output_path=output_file, merge=merge) -def txt2pdf(input_file=None, output_file=None): - """Convert text file to PDF file. +# ===================================================================== +# 3. 文本转 PDF +# ===================================================================== - 将文本文件转换为PDF文件。 +def txt2pdf(input_file: str = "text.txt", output_file: str = "output.pdf") -> None: + """Convert text file to PDF. - Documentation: https://www.python4office.cn/python-office/popdf/%E8%AF%BE%E7%A8%8B/3-txt2pdf/ + 将文本文件转换为PDF。 - Args: - input_file (str, optional): path to the text file / 文本文件路径 - output_file (str, optional): output PDF file path / 输出PDF文件路径。Default / 默认: 'txt2pdf.pdf' + Documentation: https://www.python4office.cn/python-office/popdf/3-txt2pdf/ - Returns: - None + Args: + input_file (str): 文本文件路径 + output_file (str): 输出 PDF 文件路径 """ - if output_file is None: - output_file = 'txt2pdf.pdf' - popdf.txt2pdf(input_file=input_file, output_file=output_file) -def split4pdf(input_file=None, output_file=None, from_page=-1, to_page=-1): +# ===================================================================== +# 4. 拆分 PDF +# ===================================================================== + +def split4pdf(input_file: str = None, output_file: str = "./output/split_pdf.pdf", + from_page: int = 1, to_page: int = -1) -> None: """Split PDF file. 拆分PDF文件。 - Documentation: https://www.python4office.cn/python-office/popdf/%E8%AF%BE%E7%A8%8B/4-split4pdf/ + Documentation: https://www.python4office.cn/python-office/popdf/4-split4pdf/ Args: - input_file (str, optional): path to the PDF file / PDF文件路径 - output_file (str, optional): output path for split PDF file / 输出拆分后的PDF文件路径。Default / 默认: './output_path/split_pdf.pdf' - from_page (int, optional): starting page number / 起始页码。Default / 默认: -1 (from first page / 从第一页开始) - to_page (int, optional): ending page number / 结束页码。Default / 默认: -1 (to last page / 到最后一页结束) - - Returns: - None + input_file (str): PDF 文件路径 + output_file (str): 输出拆分后的 PDF 文件路径 + from_page (int): 起始页码(1-indexed,-1 表示首页)。Default: 1 + to_page (int): 结束页码(-1 表示末页)。Default: -1 """ - if output_file is None: - output_file = r'./output_path/split_pdf.pdf' - popdf.split4pdf(input_file=input_file, output_file=output_file, from_page=from_page, to_page=to_page) -def encrypt4pdf(password, input_file=None, output_file=None, input_path=None, output_path=None): +# ===================================================================== +# 5 / 6. 加密 / 解密 PDF +# ===================================================================== + +def encrypt4pdf(password: str, input_file: str = None, output_file: str = None, + input_path: str = None, output_path: str = None) -> None: """Encrypt PDF file. 加密PDF文件。 - This function encrypts PDF files by setting a user password to protect the PDF. - - 该函数用于对PDF文件进行加密处理,支持设置用户密码保护PDF文件。 - - Documentation: https://www.python4office.cn/python-office/popdf/%E8%AF%BE%E7%A8%8B/5-encrypt4pdf/ + Documentation: https://www.python4office.cn/python-office/popdf/5-encrypt4pdf/ Args: - password (str): encryption password for the PDF file / PDF文件的加密密码 - input_file (str, optional): input PDF file name (with path) / 输入的PDF文件名(包含路径) - output_file (str, optional): output encrypted PDF file name (with path) / 输出的加密PDF文件名(包含路径) - input_path (str, optional): full path to input file / 输入文件的完整路径 - output_path (str, optional): full path for output file / 输出文件的完整路径 - - Returns: - None + password (str): 加密密码 + input_file (str): 输入 PDF 文件名(含路径) + output_file (str): 输出加密 PDF 文件名(含路径) + input_path (str): [已弃用] 旧版兼容,请用 input_file + output_path (str): [已弃用] 旧版兼容,请用 output_file """ - - popdf.encrypt4pdf(password=password, input_file=input_file, output_file=output_file, input_path=input_path, - output_path=output_path) + if password is None or str(password) == "": + raise ValueError("encrypt4pdf: password 不能为空") + popdf.encrypt4pdf(password=password, input_file=input_file, output_file=output_file, + input_path=input_path, output_path=output_path) -def decrypt4pdf(password, input_file=None, output_file=None, input_path=None, output_path=None): +def decrypt4pdf(password: str, input_file: str = None, output_file: str = None, + input_path: str = None, output_path: str = None) -> None: """Decrypt PDF file. 解密PDF文件。 - Documentation: https://www.python4office.cn/python-office/popdf/%E8%AF%BE%E7%A8%8B/6-decrypt4pdf + Documentation: https://www.python4office.cn/python-office/popdf/6-decrypt4pdf Args: - password (str): decryption password for the PDF file / PDF文件的解密密码 - input_file (str, optional): input PDF file name (with path) / 输入的PDF文件名(包含路径) - output_file (str, optional): output decrypted PDF file name (with path) / 输出的解密PDF文件名(包含路径) - input_path (str, optional): full path to input file / 输入文件的完整路径 - output_path (str, optional): full path for output file / 输出文件的完整路径 - - Returns: - None + password (str): 解密密码 + input_file (str): 输入加密 PDF 文件名(含路径) + output_file (str): 输出解密后 PDF 文件名(含路径) + input_path (str): [已弃用] 旧版兼容,请用 input_file + output_path (str): [已弃用] 旧版兼容,请用 output_file """ - popdf.decrypt4pdf(password=password, input_file=input_file, output_file=output_file, input_path=input_path, - output_path=output_path) + if password is None or str(password) == "": + raise ValueError("decrypt4pdf: password 不能为空") + popdf.decrypt4pdf(password=password, input_file=input_file, output_file=output_file, + input_path=input_path, output_path=output_path) -def add_text_watermark(input_file=None, point=None, text='python-office', - output_file=None, fontname="Helvetica", fontsize=12, color=(1, 0, 0)) -> None: - """Add text watermark to PDF document. +# ===================================================================== +# 7. 合并 PDF +# ===================================================================== - 在PDF文档中添加文本水印。 +@deprecated_params({"one_by_one": "input_file_list", "output": "output_file"}) +def merge2pdf(input_file_list: List[str] = None, output_file: str = None, + one_by_one: List[str] = None, output: str = None) -> None: + """Merge multiple PDF files. - Documentation: https://www.python4office.cn/python-office/popdf/%E8%AF%BE%E7%A8%8B/7-add_watermark + 合并多个PDF文件。 - Args: - input_file (str, optional): path to the PDF file / PDF文件路径 - point (tuple, optional): coordinates for watermark position / 水印位置坐标 - text (str, optional): watermark text content / 水印文本内容。Default / 默认: 'python-office' - output_file (str, optional): output PDF file path / 输出PDF文件路径。Default / 默认: './pdf_watermark.pdf' - fontname (str, optional): font name / 字体名称。Default / 默认: 'Helvetica' - fontsize (int, optional): font size / 字体大小。Default / 默认: 12 - color (tuple, optional): font color / 字体颜色。Default / 默认: red / 红色 (1, 0, 0) + Documentation: https://www.python4office.cn/python-office/popdf/8-merge2pdf - Returns: - None + Args: + input_file_list (list[str]): PDF 文件路径列表 + output_file (str): 合并后的 PDF 文件路径 + one_by_one (list[str]): [已弃用] 请使用 input_file_list + output (str): [已弃用] 请使用 output_file """ - if output_file is None: - output_file = './pdf_watermark.pdf' + popdf.merge2pdf(input_file_list=input_file_list, output_file=output_file) - popdf.add_watermark(input_file=input_file, point=point, text=text, - output_file=output_file, fontname=fontname, fontsize=fontsize, color=color) +# ===================================================================== +# 8. 文本水印 +# ===================================================================== -def merge2pdf(input_file_list=None, output_file=None, one_by_one=None, output=None): - """Merge multiple PDF files. +def add_text_watermark(input_file: str = None, text: str = "python-office", + output_file: str = None, + point: Tuple[float, float] = None, + fontname: str = "Helvetica", + fontsize: int = 20, + color: Tuple[float, float, float] = (0, 0, 1)) -> None: + """Add text watermark to PDF document. - 合并多个PDF文件。 + 在PDF文档中添加文本水印。 - Documentation: https://www.python4office.cn/python-office/popdf/%E8%AF%BE%E7%A8%8B/8-merge2pdf + Documentation: https://www.python4office.cn/python-office/popdf/7-add_watermark Args: - input_file_list (list, optional): list of PDF file paths / PDF文件路径列表 - output_file (str, optional): output merged PDF file path / 合并后的PDF文件路径 - one_by_one (list, optional): [已弃用] 请使用 input_file_list 参数代替 / [Deprecated] Use input_file_list instead - output (str, optional): [已弃用] 请使用 output_file 参数代替 / [Deprecated] Use output_file instead - - Returns: - None + input_file (str): PDF 文件路径 + text (str): 水印文本内容。Default: "python-office" + output_file (str): 输出 PDF 文件路径;留空时自动用输入文件同目录 + "_watermark" 后缀 + point (tuple): 水印位置坐标 (x, y) + fontname (str): 字体名称。Default: "Helvetica" + fontsize (int): 字体大小。Default: 20 + color (tuple): RGB 颜色三元组,每个分量 0~1。Default: (0, 0, 1) 蓝色 """ - # 处理已弃用的参数 - if one_by_one is not None: - warnings.warn( - "参数 'one_by_one' 已被弃用,不再推荐使用。请改用 'input_file_list' 参数。", - DeprecationWarning, - stacklevel=2 - ) - if input_file_list is None: - input_file_list = one_by_one - if output is not None: - warnings.warn( - "参数 'output' 已被弃用,不再推荐使用。请改用 'output_file' 参数。", - DeprecationWarning, - stacklevel=2 - ) - if output_file is None: - output_file = output + if output_file is None and input_file: + in_path = Path(input_file) + output_file = str(in_path.parent / f"{in_path.stem}_watermark.pdf") + print(f"[python-office] 文本水印 输出文件:{output_file}") + popdf.add_watermark(input_file=input_file, point=point, text=text, + output_file=output_file, fontname=fontname, + fontsize=fontsize, color=color) - popdf.merge2pdf(input_file_list=input_file_list, output_file=output_file) +# ===================================================================== +# 9. 图片水印(官方 API 真实存在) +# ===================================================================== -def del4pdf(input_file=None, output_file=None, page_nums=None): - """Delete specific pages from PDF file. +def add_img_water(input_file: str, mark_file: str, output_file: str) -> None: + """Add image watermark to PDF. - 删除PDF文件中的指定页面。 + 在 PDF 上叠加图片水印。 - Documentation: https://www.python4office.cn/python-office/popdf/%E8%AF%BE%E7%A8%8B/9-del4pdf + Documentation: https://www.python-office.com/modules/pdf/api#add_img_water Args: - input_file (str, optional): path to the PDF file / PDF文件路径 - output_file (str, optional): output PDF file path / 输出PDF文件路径 - page_nums (list, optional): list of page numbers to delete / 要删除的页码列表 + input_file (str): 输入 PDF 文件路径 + mark_file (str): 水印图片文件路径(建议 PNG / JPG) + output_file (str): 输出带水印的 PDF 文件路径 + """ + if not input_file: + raise ValueError("add_img_water: input_file 必填") + if not mark_file: + raise ValueError("add_img_water: mark_file 必填") + if not output_file: + # 懒人模式:输入文件 + "_watermarked" 后缀 + in_path = Path(input_file) + output_file = str(in_path.parent / f"{in_path.stem}_watermarked.pdf") + print(f"[python-office] 图片水印 输出文件:{output_file}") + popdf.add_img_water( + pdf_file_in=str(input_file), + pdf_file_mark=str(mark_file), + pdf_file_out=str(output_file), + ) + + +# ===================================================================== +# 10 / 11. 旧版 + 参数化水印 +# ===================================================================== + +@deprecated_params({"pdf_file": "input_file", "output_file_name": "output_file"}) +def add_mark(input_file: str = None, mark_str: str = None, + output_path: str = "./output/", + output_file: str = None, + pdf_file: str = None, output_file_name: str = None) -> None: + """旧版水印接口,保留兼容。 + + 推荐使用 :func:`add_watermark_by_parameters`,参数更明确。 - Returns: - None + Args: + input_file (str): PDF 文件路径 + mark_str (str): 水印文本 + output_path (str): 输出目录 + output_file (str): 输出文件名 + pdf_file (str): [已弃用] 请使用 input_file + output_file_name (str): [已弃用] 请使用 output_file """ - popdf.del4pdf(page_nums=page_nums, input_file=input_file, - output_file=output_file) + popdf.add_watermark_by_parameters( + pdf_file=input_file, mark_str=mark_str, + output_path=output_path, output_file_name=output_file, + ) -def add_img_water(input_file=None, mark_file=None, output_file=None, pdf_file_in=None, pdf_file_mark=None, pdf_file_out=None): - """Add image watermark to PDF file. +@deprecated_params({"pdf_file": "input_file", "output_file_name": "output_file"}) +def add_watermark_by_parameters(input_file: str = None, mark_str: str = None, + output_path: str = "./output/", + output_file: str = None, + pdf_file: str = None, + output_file_name: str = None) -> None: + """Add watermark to PDF with parameters(推荐使用)。 - 给PDF文件添加图片水印。 + 给PDF添加水印(带参数)。 - Args: - input_file (str, optional): input PDF file path / 输入PDF文件路径 - mark_file (str, optional): watermark image file path / 水印图片文件路径 - output_file (str, optional): output PDF file path / 输出PDF文件路径 - pdf_file_in (str, optional): [已弃用] 请使用 input_file 参数代替 / [Deprecated] Use input_file instead - pdf_file_mark (str, optional): [已弃用] 请使用 mark_file 参数代替 / [Deprecated] Use mark_file instead - pdf_file_out (str, optional): [已弃用] 请使用 output_file 参数代替 / [Deprecated] Use output_file instead + Documentation: https://www.python-office.com/modules/pdf/api#add_watermark_by_parameters - Returns: - None + Args: + input_file (str): PDF 文件路径 + mark_str (str): 水印文本 + output_path (str): 输出目录 + output_file (str): 输出文件名 + pdf_file (str): [已弃用] 请使用 input_file + output_file_name (str): [已弃用] 请使用 output_file """ - # 处理已弃用的参数 - if pdf_file_in is not None: - warnings.warn( - "参数 'pdf_file_in' 已被弃用,不再推荐使用。请改用 'input_file' 参数。", - DeprecationWarning, - stacklevel=2 - ) - if input_file is None: - input_file = pdf_file_in - if pdf_file_mark is not None: - warnings.warn( - "参数 'pdf_file_mark' 已被弃用,不再推荐使用。请改用 'mark_file' 参数。", - DeprecationWarning, - stacklevel=2 - ) - if mark_file is None: - mark_file = pdf_file_mark - if pdf_file_out is not None: - warnings.warn( - "参数 'pdf_file_out' 已被弃用,不再推荐使用。请改用 'output_file' 参数。", - DeprecationWarning, - stacklevel=2 - ) - if output_file is None: - output_file = pdf_file_out - - popdf.add_img_water(pdf_file_in=input_file, pdf_file_mark=mark_file, pdf_file_out=output_file) + popdf.add_watermark_by_parameters( + pdf_file=input_file, mark_str=mark_str, + output_path=output_path, output_file_name=output_file, + ) -def add_watermark() -> None: - """Add watermark to PDF (interactive mode). +# ===================================================================== +# 12. 删除页面 +# ===================================================================== - 给PDF添加水印(交互模式)。 - - Returns: - None - """ +def del4pdf(input_file: str = None, output_file: str = None, + page_nums: List[int] = None) -> None: + """Delete specific pages from PDF file. + 删除PDF文件中的指定页面。 -# 给pdf加水印-有参数 + Documentation: https://www.python4office.cn/python-office/popdf/9-del4pdf -def add_mark(input_file=None, mark_str=None, output_path=None, output_file=None, pdf_file=None, output_file_name=None) -> None: - """Add watermark to PDF. + Args: + input_file (str): PDF 文件路径 + output_file (str): 输出 PDF 文件路径 + page_nums (list[int]): 要删除的页码列表(1-indexed) + """ + popdf.del4pdf(page_nums=page_nums, input_file=input_file, + output_file=output_file) - 给PDF添加水印。 - Args: - input_file (str, optional): path to PDF file / PDF文件的位置,e.g. / 例如:d:/code/programmer.pdf - mark_str (str, optional): watermark content to add / 需要添加的水印内容,e.g. / 例如:"python-office" - output_path (str, optional): save directory path / 保存文件的位置 - output_file (str, optional): name for output file with watermark / 指定添加了水印的文件名称。Default / 默认: watermarked file.pdf / 添加了水印的文件.pdf - pdf_file (str, optional): [已弃用] 请使用 input_file 参数代替 / [Deprecated] Use input_file instead - output_file_name (str, optional): [已弃用] 请使用 output_file 参数代替 / [Deprecated] Use output_file instead +# ===================================================================== +# 13. 交互式水印 +# ===================================================================== - Returns: - None - """ - # 处理已弃用的参数 - if pdf_file is not None: - warnings.warn( - "参数 'pdf_file' 已被弃用,不再推荐使用。请改用 'input_file' 参数。", - DeprecationWarning, - stacklevel=2 - ) - if input_file is None: - input_file = pdf_file - if output_file_name is not None: - warnings.warn( - "参数 'output_file_name' 已被弃用,不再推荐使用。请改用 'output_file' 参数。", - DeprecationWarning, - stacklevel=2 - ) - if output_file is None: - output_file = output_file_name - - popdf.add_watermark_by_parameters(pdf_file=input_file, mark_str=mark_str, output_path=output_path, - output_file_name=output_file) - - -# 给pdf加水印-有参数 - -def add_watermark_by_parameters(input_file=None, mark_str=None, output_path=None, output_file=None, pdf_file=None, output_file_name=None) -> None: - """Add watermark to PDF with parameters. +def add_watermark() -> None: + """交互式水印入口(CLI 场景)。 - 给PDF添加水印(带参数)。 + 在命令行场景下调用 ``office.pdf.add_watermark()`` 会进入交互问答, + 由用户逐步输入参数后调用 :func:`add_text_watermark`。 - Args: - input_file (str, optional): path to PDF file / PDF文件的位置,e.g. / 例如:d:/code/programmer.pdf - mark_str (str, optional): watermark content to add / 需要添加的水印内容,e.g. / 例如:"python-office" - output_path (str, optional): save directory path / 保存文件的位置 - output_file (str, optional): name for output file with watermark / 指定添加了水印的文件名称。Default / 默认: watermarked file.pdf / 添加了水印的文件.pdf - pdf_file (str, optional): [已弃用] 请使用 input_file 参数代替 / [Deprecated] Use input_file instead - output_file_name (str, optional): [已弃用] 请使用 output_file 参数代替 / [Deprecated] Use output_file instead + 在 GUI 场景下请直接使用「PDF 加文字水印」面板,无需调用此函数。 - Returns: - None + Documentation: https://www.python-office.com/modules/pdf/api#add_watermark """ - # 处理已弃用的参数 - if pdf_file is not None: - warnings.warn( - "参数 'pdf_file' 已被弃用,不再推荐使用。请改用 'input_file' 参数。", - DeprecationWarning, - stacklevel=2 - ) - if input_file is None: - input_file = pdf_file - if output_file_name is not None: - warnings.warn( - "参数 'output_file_name' 已被弃用,不再推荐使用。请改用 'output_file' 参数。", - DeprecationWarning, - stacklevel=2 - ) - if output_file is None: - output_file = output_file_name - - popdf.add_watermark_by_parameters(pdf_file=input_file, mark_str=mark_str, output_path=output_path, - output_file_name=output_file) + print("=" * 60) + print("python-office 交互式水印") + print("=" * 60) + try: + input_file = input("请输入 PDF 文件路径: ").strip() + text = input("请输入水印文本 [python-office]: ").strip() or "python-office" + output_file = input("请输入输出文件路径 [留空自动派生]: ").strip() or None + except EOFError: + print("\n[python-office] 检测到非交互式环境,请在 GUI 中使用「PDF 加文字水印」。") + return + print() + add_text_watermark( + input_file=input_file, + text=text, + output_file=output_file, + ) + + +# ===================================================================== +# __all__ +# ===================================================================== + +__all__ = [ + "pdf2docx", + "pdf2imgs", + "txt2pdf", + "split4pdf", + "encrypt4pdf", + "decrypt4pdf", + "merge2pdf", + "add_text_watermark", + "add_img_water", + "add_mark", + "add_watermark_by_parameters", + "del4pdf", + "add_watermark", +] diff --git a/office/api/ppt.py b/office/api/ppt.py index 8d4f27bd..7b33629a 100644 --- a/office/api/ppt.py +++ b/office/api/ppt.py @@ -1,12 +1,12 @@ -# -*- coding:utf-8 -*- -"""PowerPoint processing functionality module. +# -*- coding: UTF-8 -*- +"""PPT 处理功能模块。 -PowerPoint处理功能模块。 +本模块按 https://www.python-office.com/modules/ppt/api 官方文档定义, +共 3 个函数,对应子包 ``poppt``: -This module provides PowerPoint file processing capabilities including format conversion, -file merging, and more. - -该模块提供了PowerPoint文件处理功能,包括格式转换、文件合并等。 + 1. ppt2pdf - PPT 转 PDF + 2. ppt2img - PPT 转图片(可合成一张长图) + 3. merge4ppt - 合并多个 PPT Author: 程序员晚枫 @@ -15,64 +15,104 @@ https://www.python-office.com """ -def _load_poppt(): - try: - import poppt - except ModuleNotFoundError as exc: - if exc.name != "poppt": - raise - raise ModuleNotFoundError( - "PPT处理功能依赖 poppt,该功能仅支持安装了 Microsoft PowerPoint " - "和 poppt 的 Windows 环境。" - ) from exc - return poppt +from __future__ import annotations + +from typing import Optional + +import poppt -def ppt2pdf(path: str, output_path=r'./'): +# ===================================================================== +# 1. ppt2pdf - PPT 转 PDF +# ===================================================================== + +def ppt2pdf(path: str, output_path: str = "./") -> str: """Convert PowerPoint to PDF. - - 将PPT转换为PDF。 - + + 将 PPT / PPTX 文档转换为 PDF。 + + Documentation: https://www.python-office.com/modules/ppt/api#ppt2pdf + Args: - path (str): PowerPoint file path / PPT文件路径 - output_path (str, optional): output PDF file path / 输出PDF文件路径。Default / 默认: current directory / 当前目录 - + path: PPT / PPTX 文件路径 + output_path: PDF 输出目录。Default: ``'./'`` + Returns: - None + str: 输出目录路径 """ - poppt = _load_poppt() poppt.ppt2pdf(path=path, output_path=output_path) + print(f"[python-office] ppt2pdf 输出目录:{output_path}") + return output_path + + +# ===================================================================== +# 2. ppt2img - PPT 转图片 +# ===================================================================== + +def ppt2img( + input_path: str, + output_path: str = "./", + merge: bool = False, +) -> str: + """Convert PowerPoint to images. + 将 PPT 转换为图片。 + - ``merge=False``(默认):每页一张图,输出到 ``output_path`` 目录 + - ``merge=True``:所有页拼成一张长图,输出到 ``output_path`` 单文件 + + 同时支持: + - 单个文件:传 ``input_path='xxx.pptx'`` + - 批量目录:传 ``input_path='./ppt_dir/'``,转换目录下所有 PPT + + Documentation: https://www.python-office.com/modules/ppt/api#ppt2img -def ppt2img(input_path: str, output_path=r'./', merge: bool = False): - """Convert PowerPoint to images, can convert to long image. - - 将PPT转换为图片,可以转为长图。 - Args: - input_path (str): PowerPoint file location / 存放PPT的位置。For single file, write file path / 转换单个文件可以写文件的路径; for folder, write folder path / 转换文件夹可以写文件夹的路径 - output_path (str, optional): storage location for result images / 结果图片的存储位置。Default / 默认: current directory / 当前目录 - merge (bool, optional): True converts to 1 image / True转为1张图片, False converts to multiple images / False转为多张图片。Default / 默认: False - + input_path: PPT / PPTX 文件路径,或包含多个 PPT 的目录 + output_path: 图片输出目录(merge=False)或单张长图文件路径(merge=True)。Default: ``'./'`` + merge: True=合并为一张长图,False=每页一张图。Default: ``False`` + Returns: - None + str: 实际输出目录 / 文件路径 """ - poppt = _load_poppt() poppt.ppt2img(input_path=input_path, output_path=output_path, merge=merge) + print(f"[python-office] ppt2img 输出:{output_path} merge={merge}") + return output_path + + +# ===================================================================== +# 3. merge4ppt - 合并多个 PPT +# ===================================================================== +def merge4ppt( + input_path: str, + output_path: str = "./", + output_name: str = "merge4ppt.pptx", +) -> str: + """Merge multiple PowerPoint files into one. + + 将多个 PPT / PPTX 合并为一个文件。 + + Documentation: https://www.python-office.com/modules/ppt/api#merge4ppt -def merge4ppt(input_path: str, output_path=r'./', output_name: str = 'merge4ppt.pptx'): - """Merge multiple PowerPoint files. - - 合并多个PPT文件。 - Args: - input_path (str): input PowerPoint file path / 输入PPT文件路径 - output_path (str, optional): output PowerPoint file path / 输出PPT文件路径。Default / 默认: current directory / 当前目录 - output_name (str, optional): merged PowerPoint filename / 合并后的PPT文件名。Default / 默认: 'merge4ppt.pptx' - + input_path: 包含多个 PPT / PPTX 的目录 + output_path: 合并后文件保存目录。Default: ``'./'`` + output_name: 合并后文件名(含 .pptx 后缀)。Default: ``'merge4ppt.pptx'`` + Returns: - None + str: 合并后文件完整路径 """ - poppt = _load_poppt() - poppt.merge4ppt(input_path=input_path, output_path=output_path, output_name=output_name) + poppt.merge4ppt( + input_path=input_path, output_path=output_path, output_name=output_name, + ) + out_dir = output_path.rstrip("/\\") + full = f"{out_dir}/{output_name}" + print(f"[python-office] merge4ppt 输出文件:{full}") + return full + + +__all__ = [ + "ppt2pdf", + "ppt2img", + "merge4ppt", +] diff --git a/office/api/tools.py b/office/api/tools.py index 325251e7..994592e8 100644 --- a/office/api/tools.py +++ b/office/api/tools.py @@ -1,11 +1,19 @@ -"""Utility tools functionality module. - -工具类功能模块。 - -This module provides various utility tools including translation, QR code generation, -password generation, weather query, URL to IP conversion, article generation, and more. - -该模块提供了各种工具类功能,包括翻译、二维码生成、密码生成、天气查询、URL转IP、文章生成等。 +# -*- coding: UTF-8 -*- +"""实用工具功能模块。 + +本模块按 https://www.python-office.com/modules/tools/api 官方文档定义, +共 10 个函数,对应子包 ``wftools``(随主包自动安装): + + 1. transtools - 多语言翻译 + 2. qrcodetools - 生成二维码 + 3. passwordtools - 随机密码 + 4. weather - 天气查询(CLI 交互式) + 5. url2ip - URL 转 IP + 6. lottery8ticket - 彩票号码(CLI 交互式) + 7. create_article - AI 生成文章 + 8. pwd4wifi - WiFi 密码(仅 Windows) + 9. net_speed_test - 网速测试(CLI 交互式) + 10. course - 项目信息展示 Author: 程序员晚枫 @@ -14,181 +22,231 @@ https://www.python-office.com """ +from __future__ import annotations + +from typing import List, Optional + import wftools -from pocode.api.color import random_color_print -from office.lib.conf.CONST import SPLIT_LINE +try: + from pocode.api.color import random_color_print +except ImportError: # 兜底:pocode 不可用时退化为普通 print + def random_color_print(text: str) -> None: # type: ignore[no-redef] + print(text) + + +# ===================================================================== +# 1. transtools - 多语言翻译 +# ===================================================================== +def transtools(to_lang: str, content: str, from_lang: str = "zh") -> str: + """Translate text between languages. + + 将内容从一种语言翻译为另一种语言(调用 libretranslate)。 + + Documentation: https://www.python-office.com/modules/tools/api#transtools -# -def transtools(to_lang: str, content: str, from_lang: str = 'zh'): - """Translate content from one language to another. - - 将内容从一种语言翻译为另一种语言。 - Args: - to_lang (str): target language / 目标语言 - content (str): content to translate / 待翻译的内容 - from_lang (str, optional): source language / 源语言。Default / 默认: 'zh' (Chinese / 中文) - + to_lang: 目标语言代码(en / zh / ja / ...) + content: 待翻译的内容 + from_lang: 源语言代码。Default: ``'zh'``(中文) + Returns: - str: translated result / 翻译后的结果 + str: 翻译后的结果 """ - return wftools.transtools(to_lang=to_lang, content=content, from_lang=from_lang) + result = wftools.transtools( + to_lang=to_lang, content=content, from_lang=from_lang, + ) + print(f"[python-office] transtools {from_lang}→{to_lang}: {content[:20]!r}") + return result + + +# ===================================================================== +# 2. qrcodetools - 生成二维码 +# ===================================================================== + +def qrcodetools(url: str, output: str = "./qrcode_img.png") -> str: + """Generate QR code image from URL. + 把 URL 编码为二维码图片。 + + Documentation: https://www.python-office.com/modules/tools/api#qrcodetools -def qrcodetools(url: str, output: str = r'./qrcode_img.png'): - """Generate QR code image. - - 生成二维码图片。 - Args: - url (str): URL address for generating QR code / 用于生成二维码的URL地址 - output (str, optional): save path for generated QR code image / 生成的二维码图片保存路径。Default / 默认: './qrcode_img.png' in current directory / 当前目录下的'./qrcode_img.png' - + url: 要编码的网址或文本 + output: 二维码图片保存路径。Default: ``'./qrcode_img.png'`` + Returns: - None + str: 生成的二维码图片路径 """ wftools.qrcodetools(url=url, output=output) + print(f"[python-office] qrcodetools → {output}") + return output + + +# ===================================================================== +# 3. passwordtools - 随机密码 +# ===================================================================== + +def passwordtools(len: int = 8) -> str: + """Generate random password of specified length. + + 生成指定长度的随机密码。 + Documentation: https://www.python-office.com/modules/tools/api#passwordtools -def passwordtools(len=8): - """Generate password of specified length. - - 生成一个指定长度的密码。 - Args: - len (int, optional): password length / 密码长度。Default / 默认: 8 - + len: 密码长度。Default: ``8`` + Returns: - str: generated password / 生成的密码 + str: 生成的随机密码字符串 """ - return wftools.passwordtools(len=len) - -def weather(): - """Get current weather information. - - 获取当前天气信息。 - - This function calls the weather method in wftools library to get current weather information. - Note that this function has no parameters and returns no value. It depends on external library wftools to complete actual weather information retrieval. - - 该函数调用了wftools库中的weather方法,以获取当前的天气信息。 - 请注意,此函数内部无参数且不返回任何值。它依赖于外部库wftools来完成实际的天气信息获取。 - - Returns: - None + password = wftools.passwordtools(len=len) + print(f"[python-office] passwordtools 长度={len} 密码={password!r}") + return password + + +# ===================================================================== +# 4. weather - 天气查询(CLI 交互式) +# ===================================================================== + +def weather() -> None: + """Get current weather information(CLI 交互式). + + 获取当前天气信息(CLI 场景会引导用户输入城市;GUI 中标占位即可)。 + + Documentation: https://www.python-office.com/modules/tools/api#weather """ + try: + city = input("请输入要查询的城市: ").strip() + except EOFError: + print("\n[python-office] 非交互式环境,请在 GUI 中使用天气查询。") + return wftools.weather() + print(f"[python-office] weather 查询:{city}") +# ===================================================================== +# 5. url2ip - URL 转 IP +# ===================================================================== -# 通过url,获取ip地址 -# def url2ip(url: str) -> str: - """Convert URL to IP address. - - 将URL转换为IP地址。 - - This function calls url2ip method in wftools library to parse given URL and return corresponding IP address. - - 此函数调用了wftools库中的url2ip方法,用于解析给定的URL并返回相应的IP地址。 - + """Resolve URL to IP address. + + 把 URL / 域名解析为 IP 地址。 + + Documentation: https://www.python-office.com/modules/tools/api#url2ip + Args: - url (str): URL string to convert / 需要转换的URL字符串 - + url: 要查询的网址或域名 + Returns: - str: parsed IP address string / 解析得到的IP地址字符串 + str: 解析得到的 IP 地址字符串 """ - return wftools.url2ip(url) + ip = wftools.url2ip(url=url) + print(f"[python-office] url2ip {url} → {ip}") + return ip +# ===================================================================== +# 6. lottery8ticket - 彩票号码(CLI 交互式) +# ===================================================================== -# 通过url,获取ip地址 +def lottery8ticket() -> None: + """Generate an 8-digit lottery ticket number(CLI 交互式). -def lottery8ticket(): - """Generate 8-digit lottery ticket number. - - 生成一张8位彩票号码。 - - Calls lottery8ticket method in `wftools` library to generate lottery ticket number in specified format. - This function requires no parameters and has no return value, all logic is completed internally. - - 调用了`wftools`库中的lottery8ticket方法,用于生成指定格式的彩票号码。 - 该函数不需要任何参数,也无返回值,所有逻辑都在内部完成。 - - Returns: - None + 生成一张 8 位彩票号码(CLI 场景)。 + + Documentation: https://www.python-office.com/modules/tools/api#lottery8ticket """ wftools.lottery8ticket() + print("[python-office] lottery8ticket 已生成彩票号码") +# ===================================================================== +# 7. create_article - AI 生成文章 +# ===================================================================== + +def create_article(theme: str, line_num: int = 200) -> None: + """Create an article around the given theme. + + 围绕主题自动生成文章。 + + Documentation: https://www.python-office.com/modules/tools/api#create_article -def create_article(theme, line_num=200): - """Create article. - - 创建文章。 - Args: - theme (str): article theme / 文章的主题 - line_num (int, optional): number of lines in article / 文章的行数。Default / 默认: 200 lines / 200行 - - Returns: - None + theme: 文章主题 + line_num: 目标字数。Default: ``200`` """ wftools.create_article(theme=theme, line_num=line_num) + print(f"[python-office] create_article 主题:{theme!r} 字数:{line_num}") + + +# ===================================================================== +# 8. pwd4wifi - WiFi 密码(仅 Windows) +# ===================================================================== +def pwd4wifi(len_pwd: int = 8, pwd_list: Optional[List[str]] = None) -> None: + """Generate WiFi password list (Windows only). + + 生成 WiFi 密码字典列表(仅 Windows,依赖 pywifi)。 + + Documentation: https://www.python-office.com/modules/tools/api#pwd4wifi -def pwd4wifi(len_pwd: int = 8, pwd_list=[]): - """Generate WiFi password list. - - 生成WiFi密码列表。 - - This function calls pwd4wifi function in wftools module to generate WiFi password list of specified length. - If no password list provided, function will use empty list as default parameter. - - 该函数调用wftools模块中的pwd4wifi函数,以生成指定长度的WiFi密码列表。 - 如果没有提供密码列表,函数将使用空列表作为默认参数。 - Args: - len_pwd (int, optional): password length / 密码长度。Default / 默认: 8 - pwd_list (list, optional): password list / 密码列表。Default / 默认: empty list / 空列表 - - Returns: - None + len_pwd: 密码长度。Default: ``8`` + pwd_list: 自定义字符集,留空用默认。Default: ``None`` """ - # 调用wftools模块中的pwd4wifi函数,传递密码长度和密码列表参数 + if pwd_list is None: + pwd_list = [] wftools.pwd4wifi(len_pwd=len_pwd, pwd_list=pwd_list) + print(f"[python-office] pwd4wifi 长度={len_pwd} 字符集={len(pwd_list)} 项") -# 测试网速 - -def net_speed_test(): - """Network speed test function. - - 网络速度测试函数。 - - This function is used to test network upload and download speed. - - 该函数用于测试网络的上传和下载速度。 - - Returns: - None + +# ===================================================================== +# 9. net_speed_test - 网速测试(CLI 交互式) +# ===================================================================== + +def net_speed_test() -> None: + """Test network upload and download speed(CLI 交互式). + + 测试网络上传和下载速度(CLI 场景)。 + + Documentation: https://www.python-office.com/modules/tools/api#net_speed_test """ wftools.net_speed_test() + print("[python-office] net_speed_test 测试完成") -def course(): - """Display information and resource links for python-office library. - - 显示python-office库的相关信息和资源链接。 - - Returns: - None +# ===================================================================== +# 10. course - 项目信息 +# ===================================================================== + +def course() -> None: + """Display project info and resource links for python-office. + + 显示 python-office 库的相关信息和资源链接。 + + Documentation: https://www.python-office.com/modules/tools/api#course """ - random_color_print(SPLIT_LINE) - random_color_print('【python-office库】,功能持续更新中') - random_color_print('使用有问题 or 提交你的功能需求 or 参与项目开发') - random_color_print('1、给小白的【50讲Python自动化办公】:https://www.python-office.com/course/50-python-office.html') - random_color_print('2、请+【项目交流群】:https://www.python4office.cn/wechat-group/') - random_color_print('3、本开源项目的【源代码】:https://github.com/CoderWanFeng/python-office') - random_color_print(SPLIT_LINE) + random_color_print("=" * 60) + random_color_print("【python-office 库】,功能持续更新中") + random_color_print("使用有问题 or 提交功能需求 or 参与项目开发") + random_color_print("1、给小白的【50 讲 Python 自动化办公】: https://www.python-office.com/course/50-python-office.html") + random_color_print("2、请+【项目交流群】: https://www.python4office.cn/wechat-group/") + random_color_print("3、本开源项目的【源代码】: https://github.com/CoderWanFeng/python-office") + random_color_print("=" * 60) + + +__all__ = [ + "transtools", + "qrcodetools", + "passwordtools", + "weather", + "url2ip", + "lottery8ticket", + "create_article", + "pwd4wifi", + "net_speed_test", + "course", +] diff --git a/office/api/video.py b/office/api/video.py index 3a5f8171..11b9b1e8 100644 --- a/office/api/video.py +++ b/office/api/video.py @@ -1,11 +1,13 @@ -"""Video processing functionality module. +# -*- coding: UTF-8 -*- +"""视频处理功能模块。 -视频处理功能模块。 +本模块按 https://www.python-office.com/modules/video/api 官方文档定义, +共 4 个函数,对应子包 ``povideo``: -This module provides video processing capabilities including format conversion, -audio extraction, watermark addition, text-to-speech, and more. - -该模块提供了视频处理功能,包括格式转换、音频提取、水印添加、文本转语音等。 + 1. video2mp3 - 视频提取音频 + 2. audio2txt - 音频转文字(调用腾讯云语音识别) + 3. mark2video - 视频加文字水印 + 4. txt2mp3 - 文本转语音 Author: 程序员晚枫 @@ -14,97 +16,146 @@ https://www.python-office.com """ +from __future__ import annotations + +from typing import Optional + import povideo -# 从视频里提取音频 +__all__ = ["video2mp3", "audio2txt", "mark2video", "txt2mp3"] + + +# ===================================================================== +# 1. video2mp3 - 视频提取音频 +# ===================================================================== +def video2mp3( + path: str, + mp3_name: Optional[str] = None, + output_path: str = "./", +) -> str: + """Extract audio from video and save as MP3. + 将视频文件提取为 MP3 音频。 + + Documentation: https://www.python-office.com/modules/video/api#video2mp3 -def video2mp3(path, mp3_name=None, output_path=r'./'): - """Convert video file to mp3 audio file. - - 将视频文件转换为mp3音频文件。 - Args: - path (str): video file path / 视频文件的路径 - mp3_name (str, optional): output mp3 filename / 输出mp3文件的名称。If not provided, defaults to original video filename / 如果未提供,默认为原视频文件名 - output_path (str, optional): output mp3 file path / 输出mp3文件的路径。Default / 默认: current directory / 当前目录 - + path: 输入视频文件路径 + mp3_name: 输出 MP3 文件名(不含后缀),留空则用原视频文件名。Default: ``None`` + output_path: 输出目录。Default: ``'./'`` + Returns: - None: generates mp3 file in specified output path / 在指定输出路径下生成mp3文件 + str: 输出 MP3 文件路径 """ povideo.video2mp3(path=path, mp3_name=mp3_name, output_path=output_path) + from pathlib import Path + name = mp3_name or Path(path).stem + out = str(Path(output_path) / f"{name}.mp3") + print(f"[python-office] video2mp3 输出:{out}") + return out -def audio2txt(audio_path, appid, secret_id, secret_key): - """Extract text from audio. - - 从音频里提取文字。 - - Note: Local audio file cannot exceed 5MB. - 注意:本地语音文件不能大于5MB。 - - Args: - audio_path (str): audio file path / 音频文件路径 - appid (str): speech recognition API application ID / 语音识别API的应用ID - secret_id (str): speech recognition API secret ID / 语音识别API的密钥ID - secret_key (str): speech recognition API secret key / 语音识别API的密钥 - - Returns: - None - """ - povideo.audio2txt(audio_path=audio_path, appid=appid, secret_id=secret_id, secret_key=secret_key) +# ===================================================================== +# 2. audio2txt - 音频转文字 +# ===================================================================== +def audio2txt(audio_path: str, appid: str, secret_id: str, secret_key: str) -> None: + """Convert audio to text using Tencent Cloud ASR. -def mark2video(video_path, output_path=r'./', output_name=r'mark2video.mp4', mark_str: str = "www.python-office.com", - font_size=28, - font_type='Arial', font_color='white'): - """Add watermark to video. - - 给视频添加水印。 - - Args: - video_path (str): video file path / 视频地址 - output_path (str, optional): output path / 输出地址。Default / 默认: current directory / 当前目录 - output_name (str, optional): output filename, remember to include '.mp4' / 输出名称,记得带'.mp4'。Default / 默认: 'mark2video.mp4' - mark_str (str, optional): watermark content, only supports English / 水印内容,只支持英文。Default / 默认: 'www.python-office.com' - font_size (int, optional): watermark font size / 水印字体大小。Default / 默认: 28 - font_type (str, optional): watermark font type / 水印字体类型。Default / 默认: 'Arial' - font_color (str, optional): watermark color / 水印颜色。Default / 默认: 'white' - - Returns: - None - """ - povideo.mark2video(video_path=video_path, output_path=output_path, output_name=output_name, mark_str=mark_str, font_size=font_size, font_type=font_type, font_color=font_color) + 调用腾讯云语音识别 API,把音频文件转为文字。 + 注意:本地音频文件不能大于 5MB。 + Documentation: https://www.python-office.com/modules/video/api#audio2txt -def txt2mp3(content='程序员晚枫', file=None, mp3=r'./程序员晚枫.mp3', speak=True): - """Convert text to speech. - - 文本转语音。 - Args: - content (str, optional): content to convert / 需要转换的内容。Default / 默认: '程序员晚枫' - file (str, optional): specify file to read, highest priority / 指定读取的文件,优先级最高 - mp3 (str, optional): mp3 save location and name / 需要保存的mp3位置和名称。Fill None to not save / 填None不保存。Default / 默认: './程序员晚枫.mp3' - speak (bool, optional): whether to read aloud / 是否阅读。Default / 默认: True - - Returns: - None + audio_path: 输入音频文件路径 + appid: 腾讯云语音识别应用的 appid + secret_id: 腾讯云 API SecretId + secret_key: 腾讯云 API SecretKey """ - return povideo.txt2mp3(content=content, file=file, mp3=mp3, speak=speak) + povideo.audio2txt( + audio_path=audio_path, + appid=appid, + secret_id=secret_id, + secret_key=secret_key, + ) + print(f"[python-office] audio2txt 源:{audio_path}") + + +# ===================================================================== +# 3. mark2video - 视频加文字水印 +# ===================================================================== + +def mark2video( + video_path: str, + output_path: str = "./", + output_name: str = "mark2video.mp4", + mark_str: str = "www.python-office.com", + font_size: int = 28, + font_type: str = "Arial", + font_color: str = "white", +) -> str: + """Add text watermark to video. + + 给视频添加文字水印(默认滚动)。 + + Documentation: https://www.python-office.com/modules/video/api#mark2video + Args: + video_path: 输入视频文件路径 + output_path: 输出目录。Default: ``'./'`` + output_name: 输出文件名(**记得带 .mp4 后缀**)。Default: ``'mark2video.mp4'`` + mark_str: 水印文字内容。Default: ``'www.python-office.com'`` + font_size: 水印字号。Default: ``28`` + font_type: 字体名称或字体文件路径。Default: ``'Arial'`` + font_color: 字体颜色。Default: ``'white'`` -from office.lib.video.video_edit_service import ( - _parse_time, - cut_video, - cut_audio, - crop_video, - concat_videos, - concat_audios, - add_audio_to_video, -) + Returns: + str: 完整输出文件路径 + """ + povideo.mark2video( + video_path=video_path, + output_path=output_path, + output_name=output_name, + mark_str=mark_str, + font_size=font_size, + font_type=font_type, + font_color=font_color, + ) + from pathlib import Path + out = str(Path(output_path) / output_name) + print(f"[python-office] mark2video 输出:{out} 水印:{mark_str!r}") + return out + + +# ===================================================================== +# 4. txt2mp3 - 文本转语音 +# ===================================================================== + +def txt2mp3( + content: str = "程序员晚枫", + file: Optional[str] = None, + mp3: str = "./程序员晚枫.mp3", + speak: bool = True, +) -> str: + """Convert text to speech and save as MP3. + + 调用本地 TTS 引擎把文本转为 MP3 语音。 + + Documentation: https://www.python-office.com/modules/video/api#txt2mp3 + Args: + content: 要朗读的文本内容。Default: ``'程序员晚枫'`` + file: 可选:从指定文件读取文本(优先级最高)。Default: ``None`` + mp3: 输出 MP3 文件路径。Default: ``'./程序员晚枫.mp3'`` + speak: True=边合成边朗读,False=只生成文件。Default: ``True`` + Returns: + str: 输出 MP3 文件路径 + """ + result = povideo.txt2mp3(content=content, file=file, mp3=mp3, speak=speak) + print(f"[python-office] txt2mp3 输出:{mp3} speak={speak}") + return result if isinstance(result, str) else mp3 diff --git a/office/api/web.py b/office/api/web.py index af6bc225..f24d36a0 100644 --- a/office/api/web.py +++ b/office/api/web.py @@ -1,23 +1,6 @@ # -*- coding:utf-8 -*- - -def _load_pospider(): - try: - import pospider - except ModuleNotFoundError as exc: - if exc.name != "pospider": - raise - raise ModuleNotFoundError( - "网页转电子书功能依赖 pospider,请先安装 pospider。" - ) from exc - try: - pospider.url.url2ebook - except AttributeError as exc: - raise ImportError( - "当前 pospider 版本不提供 url.url2ebook,请安装兼容版本。" - ) from exc - return pospider - +import pospider def url2ebook(url, tile): """将指定的URL转换为电子书格式。 @@ -31,5 +14,4 @@ def url2ebook(url, tile): Returns: None,但会生成电子书文件 """ - pospider = _load_pospider() pospider.url.url2ebook(url=url, tile=tile) diff --git a/office/api/wechat.py b/office/api/wechat.py index 6dccac1a..17606d42 100644 --- a/office/api/wechat.py +++ b/office/api/wechat.py @@ -1,12 +1,24 @@ # -*- coding: UTF-8 -*- -"""WeChat automation functionality module. +"""微信机器人功能模块。 -微信自动化功能模块。 +本模块按 https://www.python-office.com/modules/wechat/api 官方文档定义, +共 7 个函数,对应子包 ``PyOfficeRobot``: -This module provides WeChat automation capabilities including sending messages, -sending files, scheduled messages, keyword-based chat, and more. + 1. send_message - 发送消息 (chat.send_message) + 2. send_message_by_time - 定时发送 (chat.send_message_by_time) + 3. chat_by_keywords - 关键词自动回复 (chat.chat_by_keywords) + 4. send_file - 发送文件 (file.send_file) + 5. group_send - 群发消息 (group.send) + 6. receive_message - 接收消息 (chat.receive_message) + 7. chat_robot - 智能聊天 (chat.chat_robot) -该模块提供了微信自动化功能,包括发送消息、发送文件、定时消息、关键词聊天等。 +注意:微信 API 不是 ``office.wechat.*``,而是 ``PyOfficeRobot.*``。 + +使用提醒: + 1. 不要频繁发消息(建议间隔 1 秒以上) + 2. 不要群发广告(容易被封号) + 3. 个人微信慎用,推荐用企业微信 + 4. 依赖 PC 微信客户端,仅 Windows Author: 程序员晚枫 @@ -15,130 +27,164 @@ https://www.python-office.com """ +from __future__ import annotations + +from typing import Dict, Optional + +import PyOfficeRobot + + +__all__ = [ + "send_message", + "send_message_by_time", + "chat_by_keywords", + "send_file", + "group_send", + "receive_message", + "chat_robot", +] -def _load_py_office_robot(): - try: - import PyOfficeRobot - except ModuleNotFoundError as exc: - if exc.name != "PyOfficeRobot": - raise - raise ModuleNotFoundError( - "微信自动化功能依赖 PyOfficeRobot,该功能仅支持安装了桌面微信 " - "和 PyOfficeRobot 的 Windows 环境。" - ) from exc - return PyOfficeRobot +# ===================================================================== +# 1. send_message - 发送消息 +# ===================================================================== -def send_message(who: str, message: str): +def send_message(who: str, message: str) -> None: """Send message to specified contact. - - 发送消息给指定联系人。 - + + 发送消息给指定好友 / 文件传输助手 / 群。 + + Documentation: https://www.python-office.com/modules/wechat/api#send_message + Args: - who (str): contact name to receive message / 接收消息的联系人名称 - message (str): message content to send / 要发送的消息内容 - - Returns: - None + who: 好友昵称 / 群名(如 ``'文件传输助手'`` / ``'家人'``) + message: 要发送的消息内容 """ - PyOfficeRobot = _load_py_office_robot() PyOfficeRobot.chat.send_message(who=who, message=message) + print(f"[python-office] send_message → {who}: {message[:30]!r}") + +# ===================================================================== +# 2. send_message_by_time - 定时发送 +# ===================================================================== -def send_message_by_time(who, message, time): +def send_message_by_time(who: str, message: str, time: str) -> None: """Send message to specified contact at specified time. - - 在指定时间发送消息给指定联系人。 - + + 在指定时间自动发送消息给好友 / 群。 + + Documentation: https://www.python-office.com/modules/wechat/api#send_message_by_time + Args: - who (str): contact name to receive message / 接收消息的联系人名称 - message (str): message content to send / 要发送的消息内容 - time (str): scheduled time to send message / 发送消息的预定时间 - - Returns: - None + who: 好友昵称 / 群名 + message: 要发送的消息内容 + time: 定时发送时间,格式 ``'YYYY-MM-DD HH:MM:SS'``,如 ``'2026-06-15 09:00:00'`` """ - PyOfficeRobot = _load_py_office_robot() PyOfficeRobot.chat.send_message_by_time(who=who, message=message, time=time) + print( + f"[python-office] send_message_by_time → {who} @ {time}: {message[:30]!r}" + ) + +# ===================================================================== +# 3. chat_by_keywords - 关键词自动回复 +# ===================================================================== + +def chat_by_keywords(who: str, keywords: Dict[str, str]) -> None: + """Auto-reply to a contact based on keyword mapping. + + 根据关键词字典自动回复好友 / 群。 + + Documentation: https://www.python-office.com/modules/wechat/api#chat_by_keywords -def chat_by_keywords(who, keywords): - """Chat with specified contact based on keywords. - - 根据关键词与指定联系人聊天。 - Args: - who (str): contact name for chatting / 进行聊天的联系人名称 - keywords (list): keyword list to trigger chat / 触发聊天的关键词列表 - - Returns: - None + who: 要监听的好友 / 群名 + keywords: ``{关键词: 回复内容}`` 字典,匹配到任一关键词时自动回复 """ - PyOfficeRobot = _load_py_office_robot() PyOfficeRobot.chat.chat_by_keywords(who=who, keywords=keywords) + print( + f"[python-office] chat_by_keywords {who}: " + f"{len(keywords)} 条规则" + ) -def send_file(who, file): - """Send file to specified contact. - - 发送文件给指定联系人。 - +# ===================================================================== +# 4. send_file - 发送文件 +# ===================================================================== + +def send_file(who: str, file: str) -> None: + """Send a file to specified contact. + + 发送本地文件给好友 / 群。 + + Documentation: https://www.python-office.com/modules/wechat/api#send_file + Args: - who (str): contact name to receive file / 接收文件的联系人名称 - file (str): file path to send / 要发送的文件路径 - - Returns: - None + who: 好友昵称 / 群名 + file: 要发送的文件路径 """ - PyOfficeRobot = _load_py_office_robot() PyOfficeRobot.file.send_file(who=who, file=file) + print(f"[python-office] send_file → {who}: {file}") -def group_send(): - """Send group messages. - - 群发消息。 - - Returns: - None +# ===================================================================== +# 5. group_send - 群发消息 +# ===================================================================== + +def group_send() -> None: + """Send group messages to multiple contacts at once. + + 群发消息(按预设的群组列表)。 + + Documentation: https://www.python-office.com/modules/wechat/api#group_send """ - PyOfficeRobot = _load_py_office_robot() PyOfficeRobot.group.send() + print("[python-office] group_send 群发消息完成") + +# ===================================================================== +# 6. receive_message - 接收消息 +# ===================================================================== + +def receive_message( + who: str = "文件传输助手", + txt: str = "userMessage.txt", + output_path: str = "./", +) -> str: + """Receive WeChat messages and save to file. + + 接收指定好友 / 群的消息并保存到文件。 + + Documentation: https://www.python-office.com/modules/wechat/api#receive_message -def receive_message(who='文件传输助手', txt='userMessage.txt', output_path='./'): - """Receive WeChat robot messages and save to specified path. - - 接收微信机器人消息并保存到指定路径。 - - This function receives messages from WeChat robot by calling receive_message function in PyOfficeRobot library, - and saves received messages to specified file. This is a way to automate WeChat message reception. - - 该函数通过调用PyOfficeRobot库中的receive_message函数来接收微信机器人的消息, - 并将接收到的消息保存到指定的文件中。这是实现微信消息接收自动化的一种方式。 - Args: - who (str, optional): WeChat contact who sent message / 发送消息的微信联系人。Default / 默认: '文件传输助手' - txt (str, optional): message content text filename / 消息内容的文本文件名。Default / 默认: 'userMessage.txt' - output_path (str, optional): message content save path / 消息内容的保存路径。Default / 默认: current directory / 当前目录 - + who: 要监听的好友 / 群名。Default: ``'文件传输助手'`` + txt: 消息保存的文本文件名。Default: ``'userMessage.txt'`` + output_path: 消息文件保存目录。Default: ``'./'`` + Returns: - None: function result is saving messages to specified file and path / 函数的执行结果是将消息保存到指定的文件和路径中 + str: 实际保存路径(``output_path/txt``) """ - PyOfficeRobot = _load_py_office_robot() PyOfficeRobot.chat.receive_message(who=who, txt=txt, output_path=output_path) + from pathlib import Path + out = str(Path(output_path) / txt) + print(f"[python-office] receive_message {who} → {out}") + return out + +# ===================================================================== +# 7. chat_robot - 智能聊天 +# ===================================================================== + +def chat_robot(who: str = "程序员晚枫") -> None: + """Enable intelligent chat with specified contact. + + 启动与指定好友的智能聊天(需配置 OpenAI Key 等模型凭据)。 + + Documentation: https://www.python-office.com/modules/wechat/api#chat_robot -def chat_robot(who='程序员晚枫'): - """Intelligent chat. - - 智能聊天。 - Args: - who (str, optional): specify chat target / 指定聊天对象。Can be remark name, does not support special characters / 可以是备注名称,不支持特殊字符。Default / 默认: '程序员晚枫' - - Returns: - None + who: 聊天对象(备注名称,不支持特殊字符)。Default: ``'程序员晚枫'`` """ - PyOfficeRobot = _load_py_office_robot() PyOfficeRobot.chat.chat_robot(who=who) + print(f"[python-office] chat_robot 已启动智能聊天:{who}") diff --git a/office/api/word.py b/office/api/word.py index 423b56f4..eed8cbf5 100644 --- a/office/api/word.py +++ b/office/api/word.py @@ -1,12 +1,17 @@ # -*- coding: UTF-8 -*- -"""Word processing functionality module. +"""Word 处理功能模块。 -Word处理功能模块。 +本模块按 https://www.python-office.com/modules/word/api 官方文档定义, +共 5 个函数,对应子包 ``poword``: -This module provides Word document processing capabilities including format conversion, -file merging, image extraction, and more. + 1. docx2pdf - Word 转 PDF(支持单个文件或整个文件夹批量) + 2. merge4docx - 合并多个 Word + 3. doc2docx - 旧版 .doc 转为 .docx + 4. docx2doc - .docx 转回旧版 .doc + 5. docx4imgs - 从 Word 提取图片 -该模块提供了Word文档处理功能,包括格式转换、文件合并、图片提取等。 +所有函数依赖 Microsoft Word / WPS / LibreOffice,**仅 Windows / macOS / Linux 桌面环境**可用。 +CI / 无头服务器调用会失败。 Author: 程序员晚枫 @@ -14,105 +19,179 @@ Project: https://www.python-office.com """ -from pathlib import Path +from __future__ import annotations -def _load_poword(): - try: - import poword - except ModuleNotFoundError as exc: - if exc.name != "poword": - raise - raise ModuleNotFoundError( - "Word处理功能依赖 poword,该功能仅支持安装了 Microsoft Word " - "和 poword 的 Windows 环境。" - ) from exc - return poword +import os +from typing import Optional +import poword -def docx2pdf(path: str, output_path: str = None): + +# ===================================================================== +# 1. docx2pdf - Word 转 PDF +# ===================================================================== + +def docx2pdf(path: str, output_path: Optional[str] = None) -> str: """Convert Word to PDF. - - 将Word转换为PDF。 - + + 将 Word 文档转换为 PDF。**支持单个文件或整个文件夹批量转换**。 + + - 输入 ``path`` 是文件 → 转换该文件 + - 输入 ``path`` 是目录 → 批量转换目录下所有 .docx / .doc + + 平台要求:依赖 Microsoft Word / WPS / LibreOffice。 + - Windows:装 Office 或 WPS + - macOS:``brew install --cask libreoffice`` + - Linux:``sudo apt install libreoffice`` + + Documentation: https://www.python-office.com/modules/word/api#docx2pdf + Args: - path (str): Word file location / Word文件的位置。Supports batch processing / 支持批量处理: fill in folder location / 填写文件夹位置 - output_path (str, optional): output location after conversion / 转换后的输出位置。Will be created automatically if not exists / 如果不存在会自动创建 - + path: Word 文件路径,或包含多个 Word 文件的目录路径 + output_path: 转换后的 PDF 输出目录;不存在会自动创建。 + 留空则输出到 ``path`` 所在目录。 + Returns: - None + str: 实际输出目录路径 """ if output_path is None: output_path = path - poword = _load_poword() poword.docx2pdf(path=path, output_path=output_path) + print(f"[python-office] docx2pdf 输出目录:{output_path}") + return output_path + + +# ===================================================================== +# 2. merge4docx - 合并多个 Word +# ===================================================================== + +def merge4docx( + input_path: str, + output_path: str, + new_word_name: str = "merge4docx", +) -> str: + """Merge multiple Word files into one. + + 合并多个 .docx 文件为一个文件。 + + Documentation: https://www.python-office.com/modules/word/api#merge4docx -def merge4docx(input_path: str, output_path: str, new_word_name: str = 'merge4docx'): - """Merge multiple Docx files into one file. - - 合并多个Docx文件为一个文件。 - Args: - input_path (str): input file path / 输入文件的路径。Can be a single file or folder path / 可以是单个文件或文件夹路径 - output_path (str): output path for merged file / 输出合并后文件的路径 - new_word_name (str, optional): name of merged new file / 合并后新文件的名称。Default / 默认: 'merge4docx' - + input_path: 包含多个 .docx 的目录路径 + output_path: 合并后文件保存目录 + new_word_name: 合并后新文件的名称(不含 .docx 后缀)。Default: ``'merge4docx'`` + Returns: - None + str: 合并后新文件的完整路径 """ - poword = _load_poword() - poword.merge4docx(input_path=input_path, output_path=output_path, new_word_name=new_word_name) + poword.merge4docx( + input_path=input_path, + output_path=output_path, + new_word_name=new_word_name, + ) + out_dir = output_path.rstrip("/\\") + full = f"{out_dir}/{new_word_name}.docx" + print(f"[python-office] merge4docx 输出文件:{full}") + return full + +# ===================================================================== +# 3. doc2docx - .doc 转为 .docx +# ===================================================================== + +def doc2docx( + input_path: str, + output_path: str = "./", + output_name: Optional[str] = None, +) -> str: + """Convert legacy .doc to .docx. + + 将旧版 .doc 文档转换为新版 .docx。 + + Documentation: https://www.python-office.com/modules/word/api#doc2docx -def doc2docx(input_path: str, output_path: str = r'./', output_name: str = None): - """Convert Doc file to Docx file. - - 将Doc文件转换为Docx文件。 - Args: - input_path (str): input Doc file path / 输入Doc文件的路径 - output_path (str, optional): output Docx file path / 输出Docx文件的路径。Can be a directory or a .docx file path / 可以是目录或 .docx 文件路径。Default / 默认: current directory / 当前目录 - output_name (str, optional): output Docx file name / 输出Docx文件的名称。Default / 默认: original filename / 原文件名 - + input_path: 要转换的 .doc 文件路径 + output_path: 输出的 .docx 保存目录。Default: ``'./'`` + output_name: 输出的 .docx 文件名(不含后缀),留空则与原文件同名。Default: ``None`` + Returns: - None + str: 转换后的 .docx 完整路径 """ - if output_name is None and Path(output_path).suffix.lower() == ".docx": - output_file = Path(output_path) - output_path = str(output_file.parent) - output_name = output_file.name + poword.doc2docx( + input_path=input_path, output_path=output_path, output_name=output_name, + ) + base = output_name or os.path.basename(input_path).rsplit(".", 1)[0] + out_dir = output_path.rstrip("/\\") + full = f"{out_dir}/{base}.docx" + print(f"[python-office] doc2docx 输出文件:{full}") + return full - poword = _load_poword() - poword.doc2docx(input_path=input_path, output_path=output_path, output_name=output_name) +# ===================================================================== +# 4. docx2doc - .docx 转回 .doc +# ===================================================================== + +def docx2doc( + input_path: str, + output_path: str = "./", + output_name: Optional[str] = None, +) -> str: + """Convert .docx back to legacy .doc. + + 将 .docx 文档转回旧版 .doc。 + + Documentation: https://www.python-office.com/modules/word/api#docx2doc -def docx2doc(input_path: str, output_path: str = r'./', output_name: str = None): - """Convert Docx file to Doc file. - - 将Docx文件转换为Doc文件。 - Args: - input_path (str): input Docx file path / 输入Docx文件的路径 - output_path (str, optional): output Doc file path / 输出Doc文件的路径。Default / 默认: current directory / 当前目录 - output_name (str, optional): output Doc file name / 输出Doc文件的名称。Default / 默认: original filename / 原文件名 - + input_path: 要转换的 .docx 文件路径 + output_path: 输出的 .doc 保存目录。Default: ``'./'`` + output_name: 输出的 .doc 文件名(不含后缀),留空则与原文件同名。Default: ``None`` + Returns: - None + str: 转换后的 .doc 完整路径 """ - poword = _load_poword() - poword.docx2doc(input_path=input_path, output_path=output_path, output_name=output_name) - -def docx4imgs(word_path, img_path): - """Extract images from Word document. - - 从Word里提取图片。 - + poword.docx2doc( + input_path=input_path, output_path=output_path, output_name=output_name, + ) + base = output_name or os.path.basename(input_path).rsplit(".", 1)[0] + out_dir = output_path.rstrip("/\\") + full = f"{out_dir}/{base}.doc" + print(f"[python-office] docx2doc 输出文件:{full}") + return full + + +# ===================================================================== +# 5. docx4imgs - 从 Word 提取图片 +# ===================================================================== + +def docx4imgs(word_path: str, img_path: str) -> str: + """Extract images from a Word document. + + 从 Word 文档中提取所有图片到指定目录。 + 会在 ``img_path`` 下自动按 Word 名称生成一个子目录。 + + Documentation: https://www.python-office.com/modules/word/api#docx4imgs + Args: - word_path (str): Word document path / Word文档的路径 - img_path (str): storage location for extracted images / 提取图片的存储位置。Will automatically generate a subdirectory / 会自动根据word名称在指定文件夹下生成一个子目录 - + word_path: .docx 文件路径 + img_path: 图片输出根目录 + Returns: - None + str: 实际图片输出目录(``img_path/``) """ - poword = _load_poword() poword.docx4imgs(word_path=word_path, img_path=img_path) + from pathlib import Path + out = str(Path(img_path) / Path(word_path).stem) + print(f"[python-office] docx4imgs 输出目录:{out}") + return out + + +__all__ = [ + "docx2pdf", + "merge4docx", + "doc2docx", + "docx2doc", + "docx4imgs", +] diff --git a/office/compatibility.py b/office/compatibility.py index c7375a61..20fd0975 100644 --- a/office/compatibility.py +++ b/office/compatibility.py @@ -13,44 +13,40 @@ class CrossPlatformCompatibility: """跨平台兼容性检查器。""" - + def __init__(self): self.is_windows = platform.system() == 'Windows' self.is_macos = platform.system() == 'Darwin' self.is_linux = platform.system() == 'Linux' self.mark_file = Path.home() / '.python-office' / 'first_run_mark' self.is_first_run = self._check_first_run() - + def _check_first_run(self) -> bool: """检查是否是首次运行。 - + Returns: bool: 如果是首次运行返回True,否则返回False """ - try: - # 创建标记目录 - self.mark_file.parent.mkdir(exist_ok=True) - - # 如果标记文件不存在,则是首次运行 - if not self.mark_file.exists(): - # 创建标记文件 - self.mark_file.write_text(f"First run on {platform.system()} at {platform.platform()}") - return True - except OSError: - # 兼容性提示不应影响主包导入;HOME 只读或不可写时跳过首次运行提示。 - return False + # 创建标记目录 + self.mark_file.parent.mkdir(exist_ok=True) + + # 如果标记文件不存在,则是首次运行 + if not self.mark_file.exists(): + # 创建标记文件 + self.mark_file.write_text(f"First run on {platform.system()} at {platform.platform()}") + return True return False - + def get_compatibility_info(self) -> Dict[str, List[str]]: """获取兼容性信息。 - + Returns: Dict[str, List[str]]: 包含兼容性信息的字典 """ return { "fully_supported": [ "Excel处理 (poexcel)", - "PDF处理 (popdf)", + "PDF处理 (popdf)", "图片处理 (poimage)", "文件管理 (pofile)", "邮件发送 (poemail)", @@ -74,17 +70,17 @@ def get_compatibility_info(self) -> Dict[str, List[str]]: "文件搜索: 可以使用系统自带的搜索工具或find命令" ] } - + def display_warning(self): """显示兼容性警告信息。""" if self.is_windows: return # Windows系统不需要警告 - + if not self.is_first_run: return # 非首次运行不需要重复显示 - + compat_info = self.get_compatibility_info() - + # 使用rich库进行彩色输出(如果可用) try: from rich.console import Console @@ -92,68 +88,68 @@ def display_warning(self): from rich.table import Table from rich.text import Text from rich import print as rprint - + console = Console() - + # 标题 title = Text("⚠️ Python-Office 跨平台兼容性提示", style="bold red") - + # 创建兼容性表格 table = Table(title="功能兼容性概览", show_header=True, header_style="bold magenta") table.add_column("状态", style="cyan", width=12) table.add_column("功能模块", style="white") - + # 添加完全支持的功能 for func in compat_info["fully_supported"]: table.add_row("✅ 完全支持", func) - + # 添加仅Windows支持的功能 for func in compat_info["windows_only"]: table.add_row("❌ 仅Windows", func) - + # 创建解决方案表格 solution_table = Table(title="替代解决方案", show_header=True, header_style="bold green") solution_table.add_column("Windows功能", style="yellow") solution_table.add_column("替代方案", style="white") - + for workaround in compat_info["workarounds"]: parts = workaround.split(": ") if len(parts) == 2: solution_table.add_row(parts[0], parts[1]) - + # 输出面板 console.print(Panel( title, style="bright_yellow", width=80 )) - + console.print(f"\n📋 检测到您正在使用: {platform.system()} {platform.release()}") console.print("💡 这是您首次在此系统上运行python-office库\n") - + console.print(table) console.print("\n") console.print(solution_table) - + # 资源链接 resources_text = Text("\n🔗 相关资源链接:") resources_text.append("\n• 官方文档: https://www.python-office.com") resources_text.append("\n• 问题反馈: https://github.com/CoderWanFeng/python-office/issues") resources_text.append("\n• 交流群: https://www.python4office.cn/wechat-group") - + console.print(Panel( resources_text, title="💬 获取帮助", style="blue" )) - + except ImportError: # 如果rich不可用,使用普通输出 self._display_plain_warning(compat_info) - + def _display_plain_warning(self, compat_info: Dict[str, List[str]]): """使用普通文本显示警告。 - + Args: compat_info (Dict[str, List[str]]): 兼容性信息字典 """ @@ -162,36 +158,36 @@ def _display_plain_warning(self, compat_info: Dict[str, List[str]]): print("=" * 80) print(f"\n📋 检测到您正在使用: {platform.system()} {platform.release()}") print("💡 这是您首次在此系统上运行python-office库\n") - + print("📊 功能兼容性概览:") print("-" * 40) - + print("\n✅ 完全支持的功能:") for func in compat_info["fully_supported"]: print(f" • {func}") - + print("\n❌ 仅Windows支持的功能:") for func in compat_info["windows_only"]: print(f" • {func}") - + print("\n🛠️ 替代解决方案:") print("-" * 40) for workaround in compat_info["workarounds"]: print(f" • {workaround}") - + print("\n🔗 相关资源链接:") print("-" * 40) print(" • 官方文档: https://www.python-office.com") print(" • 问题反馈: https://github.com/CoderWanFeng/python-office/issues") print(" • 交流群: https://www.python4office.cn/wechat-group") print("\n" + "=" * 80) - + def check_module_compatibility(self, module_name: str) -> bool: """检查特定模块的兼容性。 - + Args: module_name (str): 模块名称 - + Returns: bool: 如果模块兼容返回True,否则返回False """ @@ -199,14 +195,14 @@ def check_module_compatibility(self, module_name: str) -> bool: 'poppt', 'poword', 'search4file', 'PyOfficeRobot', 'ppt', 'word', 'wechat' } - + if module_name in windows_only_modules and not self.is_windows: return False return True - + def get_platform_specific_advice(self) -> str: """获取平台特定的建议。 - + Returns: str: 平台特定的建议信息 """ @@ -230,7 +226,7 @@ def get_platform_specific_advice(self) -> str: def check_compatibility(): """检查兼容性的主函数。 - + Returns: CrossPlatformCompatibility: 兼容性检查器实例 """ @@ -240,11 +236,9 @@ def check_compatibility(): if __name__ == "__main__": - # 测试代码 + # 显式触发:``python -m office.compatibility`` checker = CrossPlatformCompatibility() print(f"系统: {platform.system()}") print(f"首次运行: {checker.is_first_run}") print(f"标记文件: {checker.mark_file}") - - # 显示警告(仅在非Windows且首次运行时) - checker.display_warning() + checker.display_warning() \ No newline at end of file diff --git a/office/lib/decorator_utils/__init__.py b/office/lib/decorator_utils/__init__.py index e69de29b..1163172a 100644 --- a/office/lib/decorator_utils/__init__.py +++ b/office/lib/decorator_utils/__init__.py @@ -0,0 +1,7 @@ +# -*- coding: utf-8 -*- +"""装饰器工具集合。""" + +from office.lib.decorator_utils.deprecated import deprecated_params +from office.lib.decorator_utils.instruction_url import instruction + +__all__ = ["deprecated_params", "instruction"] diff --git a/office/lib/decorator_utils/deprecated.py b/office/lib/decorator_utils/deprecated.py new file mode 100644 index 00000000..b9a97631 --- /dev/null +++ b/office/lib/decorator_utils/deprecated.py @@ -0,0 +1,69 @@ +# -*- coding: utf-8 -*- +"""deprecated 参数兼容装饰器。 + +旧版 python-office 各 API 使用过许多旧参数名(file_path / pdf_path / +out_dir / one_by_one / output / pdf_file / pdf_file_in / pdf_file_out / +mark_str / ...),每个函数里都重复 5~15 行的 DeprecationWarning + 回退 +映射,逻辑雷同、容易漏改。 + +本装饰器把"哪一组旧参数名 -> 新参数名"的映射抽出来,重复模式收敛到一处, +调用方只需要声明映射,函数体保持原本的转发逻辑。 + +使用示例:: + + from office.lib.decorator_utils import deprecated_params + + @deprecated_params({ + 'file_path': 'input_file', + 'out_dir': 'output_file', + }) + def pdf2imgs(input_file=None, output_file=None, file_path=None, + out_dir=None, merge=False): + ... + +调用 ``pdf2imgs(file_path='a.pdf')`` 时会自动发出 DeprecationWarning +并把 ``file_path`` 的值映射到 ``input_file``。 +""" + +from __future__ import annotations + +import warnings +from functools import wraps +from typing import Callable, Mapping + + +def deprecated_params(mapping: Mapping[str, str]) -> Callable: + """装饰器:把一组"旧参数名 -> 新参数名"映射集中处理。 + + Args: + mapping: 旧参数名 -> 新参数名 的字典。仅当调用方传入了旧参数 + 且新参数未传入时触发回退;同时会发出 DeprecationWarning, + stacklevel=2 让警告指向调用方而非装饰器内部。 + + Returns: + Callable: 装饰后的函数,签名不变。 + """ + + def decorator(func: Callable) -> Callable: + @wraps(func) + def wrapper(*args, **kwargs): + for old, new in mapping.items(): + if old in kwargs and kwargs[old] is not None: + warnings.warn( + f"参数 '{old}' 已被弃用,将在后续版本中移除。" + f"请改用 '{new}'。", + DeprecationWarning, + stacklevel=2, + ) + if new not in kwargs or kwargs[new] is None: + kwargs[new] = kwargs.pop(old) + else: + kwargs.pop(old) + return func(*args, **kwargs) + + return wrapper + + return decorator + + +__all__ = ["deprecated_params"] diff --git a/office/lib/decorator_utils/instruction_url.py b/office/lib/decorator_utils/instruction_url.py index 885aa69b..09785272 100644 --- a/office/lib/decorator_utils/instruction_url.py +++ b/office/lib/decorator_utils/instruction_url.py @@ -119,11 +119,10 @@ def instruction(func): @wraps(func) def instruction_wrapper(*args, **kwargs): func_filename = os.path.basename(func.__code__.co_filename) # 取出方法所在的文件名 - instruction_url = instruction_file_dict.get(func_filename, {}).get(func.__name__) # 如果有这个文件,并且已经配置了方法名对应的说明链接,则打印出来 - if instruction_url: + if func_filename in instruction_file_dict.keys() and instruction_file_dict[func_filename][func.__name__]: random_color_print( - f'正在运行:office.{os.path.basename(func_filename)[:-3]}.{func.__name__} , 这个方法的使用说明:{instruction_url}') + f'正在运行:office.{os.path.basename(func_filename)[:-3]}.{func.__name__} , 这个方法的使用说明:{instruction_file_dict[func_filename][func.__name__]}') random_color_print(SPLIT_LINE) instruction_res = func(*args, **kwargs) return instruction_res diff --git a/office/lib/excel/SplitExcel.py b/office/lib/excel/SplitExcel.py index 9b67e139..9586155b 100644 --- a/office/lib/excel/SplitExcel.py +++ b/office/lib/excel/SplitExcel.py @@ -2,7 +2,6 @@ import xlrd, xlwt import openpyxl import datetime -from tqdm import tqdm # @@ -42,8 +41,8 @@ def process_xls(filepath: str, column: int, worksheet_name: str = None) -> str: """ try: workbook = xlrd.open_workbook(filepath, formatting_info=True) - except Exception as e: - return "文件读取异常:{},错误信息:{}".format(filepath, str(e)) + except: + return "文件读取异常:{}".format(filepath) if worksheet_name: worksheet = workbook.sheet_by_name(worksheet_name) else: @@ -95,26 +94,22 @@ def process_xlsx(filepath: str, column: int, worksheet_name: str = None) -> str: """ try: workbook = openpyxl.load_workbook(filepath, read_only=True, data_only=True) - try: - if worksheet_name: - worksheet = workbook[worksheet_name] - else: - worksheet = workbook.active - if worksheet.max_column < column: - return "最大列数是{},取不到第{}列".format(worksheet.max_column, column) + except: + return "文件读取异常:{}".format(filepath) + if worksheet_name: + worksheet = workbook.get_sheet_by_name(worksheet_name) + else: + worksheet = workbook.active + if worksheet.max_column < column: + return "最大列数是{},取不到第{}列".format(worksheet.max_column, column) - split_data_dict = {} - for row in worksheet.rows: - row_data = [cell.value if cell.value else ' ' for cell in row] - temp_data = row_data[column - 1] - temp_data_list = split_data_dict.get(temp_data, []) - temp_data_list.append(row_data) - split_data_dict[temp_data] = temp_data_list - finally: - workbook.close() - except Exception as e: - return "处理异常:{},错误信息:{}".format(filepath, str(e)) - + split_data_dict = {} + for row in worksheet.rows: + row_data = [cell.value if cell.value else ' ' for cell in row] + temp_data = row_data[column - 1] + temp_data_list = split_data_dict.get(temp_data, []) + temp_data_list.append(row_data) + split_data_dict[temp_data] = temp_data_list new_filepath = generate_xlsx(filepath, split_data_dict) return "数据保存在新文件中,文件名:{}".format(new_filepath) diff --git a/office/lib/image/eliminate_background.py b/office/lib/image/eliminate_background.py index bcb56c27..50fde0e7 100644 --- a/office/lib/image/eliminate_background.py +++ b/office/lib/image/eliminate_background.py @@ -9,7 +9,8 @@ def _hex_to_rgb(hex): 十六进制转RGB """ if hex[0] != '#' or len(hex) != 7: - raise ValueError('十六进制格式颜色错误,请输入7位以\'#\'开头的字符串,例如 #FFFFFF') + print('注意:十六进制格式颜色错误,请输入7位以\'#\'开头的字符串\n') + return None else: r = int('0x' + hex[1:3], 16) g = int('0x' + hex[3:5], 16) @@ -37,9 +38,11 @@ def eliminate_bc(src_img_path: str, save_img_path: str, margin: int = 30, bc_col r, g, b = bc_color else: # 未给定背景色,拾取图片左上角颜色作为背景色 - rgb_img = img.convert("RGB") - pix = rgb_img.load() - r, g, b = pix[int(width / 20), int(height / 20)] + pix = img.load() + if src_img_path.endswith('.jpg'): + r, g, b = pix[int(width / 20), int(height / 20)] + elif src_img_path.endswith('.png'): + r, g, b, _ = pix[int(width / 20), int(height / 20)] img = img.convert("RGBA") datas = img.getdata() diff --git a/office/lib/pdf/add_watermark_service.py b/office/lib/pdf/add_watermark_service.py index 4fcf0a8f..5ed5c7ce 100644 --- a/office/lib/pdf/add_watermark_service.py +++ b/office/lib/pdf/add_watermark_service.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- import reportlab -from PyPDF2 import PdfReader, PdfWriter +from PyPDF2 import PdfFileWriter, PdfFileReader, PdfReader, PdfWriter from reportlab.pdfgen import canvas from reportlab.pdfbase.ttfonts import TTFont from reportlab.pdfbase.pdfmetrics import registerFont @@ -44,42 +44,29 @@ def pdf_add_watermark(pdf_file_in: str, pdf_file_mark: str, pdf_file_out: str) - """ # print(pdf_file_out) pdf_output = PdfWriter() - input_stream = None - mark_stream = None - try: - input_stream = open(pdf_file_in, 'rb') - pdf_input = PdfReader(input_stream, strict=False) - # 获取PDF文件的页数 - if pdf_input.is_encrypted: - print("文件已被加密") - PDF_Passwd = input("请输入PDF密码:") - # 尝试用空密码解密 - try: - pdf_input.decrypt(PDF_Passwd) - except Exception: - print(f"尝试用密码{PDF_Passwd}解密失败.") - return False - pageNum = len(pdf_input.pages) - # 读入水印pdf文件 - # print(pdf_file_mark) - mark_stream = open(pdf_file_mark, mode='rb') - pdf_watermark = PdfReader(mark_stream, strict=False) - # 检查水印PDF是否有效(至少包含一页) - if len(pdf_watermark.pages) == 0: - print(f"水印文件不包含任何页面:{pdf_file_mark}") + input_stream = open(pdf_file_in, 'rb') + pdf_input = PdfReader(input_stream, strict=False) + # 获取PDF文件的页数 + if pdf_input.is_encrypted: + print("文件已被加密") + PDF_Passwd = input("请输入PDF密码:") + # 尝试用空密码解密 + try: + pdf_input.decrypt(PDF_Passwd) + except Exception: + print(f"尝试用密码{PDF_Passwd}解密失败.") return False - # 给每一页打水印 - for pageNumber in tqdm(range(pageNum)): - page = pdf_input.pages[pageNumber] - page.merge_page(pdf_watermark.pages[0]) - page.compress_content_streams() # 压缩内容 - pdf_output.add_page(page) - with open(pdf_file_out, 'wb') as pdf_file_out_f: - pdf_output.write(pdf_file_out_f) - return True - finally: - # 无论成功失败,都确保输入流和水印流被关闭,避免批量处理时文件句柄泄漏 - if input_stream is not None: - input_stream.close() - if mark_stream is not None: - mark_stream.close() + pageNum = len(pdf_input.pages) + # 读入水印pdf文件 + # print(pdf_file_mark) + mark_stream = open(pdf_file_mark, mode='rb') + pdf_watermark = PdfReader(mark_stream, strict=False) + # 给每一页打水印 + for pageNumber in tqdm(range(pageNum)): + page = pdf_input.pages[pageNumber] + page.merge_page(pdf_watermark.pages[0]) + page.compress_content_streams() # 压缩内容 + pdf_output.add_page(page) + with open(pdf_file_out, 'wb') as pdf_file_out_f: + pdf_output.write(pdf_file_out_f) + return True diff --git a/scripts/build-gui-nuitka.ps1 b/scripts/build-gui-nuitka.ps1 new file mode 100644 index 00000000..55a5e667 --- /dev/null +++ b/scripts/build-gui-nuitka.ps1 @@ -0,0 +1,397 @@ +param( + [switch]$OneFile, + [switch]$AssumeYesForDownloads, + [switch]$SkipDependencyCopy +) + +$ErrorActionPreference = "Stop" + +$Root = Split-Path -Parent $PSScriptRoot +$Entry = Join-Path $Root "gui\run.py" +$OutDir = Join-Path $Root "dist-nuitka" +$CacheDir = Join-Path $Root ".nuitka-cache" +$IconPath = Join-Path $Root "gui\assets\python-office.ico" + +New-Item -ItemType Directory -Force -Path $OutDir | Out-Null +New-Item -ItemType Directory -Force -Path $CacheDir | Out-Null + +$env:NUITKA_CACHE_DIR = $CacheDir +$env:PYTHONPATH = $Root + +$modeArgs = @("--standalone") +if ($OneFile) { + $modeArgs = @("--onefile") +} + +$downloadArgs = @() +if ($AssumeYesForDownloads) { + $downloadArgs += "--assume-yes-for-downloads" +} + +$PreviousErrorActionPreference = $ErrorActionPreference +$ErrorActionPreference = "Continue" +python -m nuitka ` + $Entry ` + @modeArgs ` + @downloadArgs ` + --mingw64 ` + --enable-plugin=pyside6 ` + --windows-console-mode=disable ` + --windows-icon-from-ico=$IconPath ` + --output-dir=$OutDir ` + --output-filename=python-office-gui ` + --include-data-file="$IconPath=gui/assets/python-office.ico" ` + --show-progress ` + --show-memory ` + --include-module=gui.run ` + --include-module=gui.app ` + --include-module=gui.main_window ` + --include-module=gui.panels ` + --include-module=gui.registry ` + --include-module=gui.styles ` + --include-module=gui.workers ` + --include-module=gui.widgets ` + --include-module=gui.widgets.param_form ` + --include-module=office ` + --include-module=office.api ` + --include-module=office.api.pdf ` + --include-module=office.api.excel ` + --include-module=office.api.word ` + --include-module=office.api.ppt ` + --include-module=office.api.image ` + --include-module=office.api.file ` + --include-module=office.api.video ` + --include-module=office.api.email ` + --include-module=office.api.ocr ` + --include-module=office.api.markdown ` + --include-module=office.api.tools ` + --include-module=office.api.finance ` + --include-module=office.lib.decorator_utils ` + --include-package=ctypes ` + --include-package=email.mime ` + --include-package=http ` + --include-package=logging ` + --include-package=urllib ` + --include-package=xml ` + --include-module=secrets ` + --include-module=smtplib ` + --include-module=socket ` + --nofollow-import-to=gui.pdf2word ` + --nofollow-import-to=gui.qtpy ` + --nofollow-import-to=popdf ` + --nofollow-import-to=poexcel ` + --nofollow-import-to=pofile ` + --nofollow-import-to=poimage ` + --nofollow-import-to=poocr ` + --nofollow-import-to=pomarkdown ` + --nofollow-import-to=poemail ` + --nofollow-import-to=povideo ` + --nofollow-import-to=wftools ` + --nofollow-import-to=poprogress ` + --nofollow-import-to=pocode ` + --nofollow-import-to=poppt ` + --nofollow-import-to=poword ` + --nofollow-import-to=search4file ` + --nofollow-import-to=loguru ` + --nofollow-import-to=you_get ` + --nofollow-import-to=openpyxl ` + --nofollow-import-to=pandas ` + --nofollow-import-to=numpy ` + --nofollow-import-to=requests ` + --nofollow-import-to=xlrd ` + --nofollow-import-to=xlwt ` + --nofollow-import-to=xlwings ` + --nofollow-import-to=pdf2docx ` + --nofollow-import-to=pypdf ` + --nofollow-import-to=PyPDF2 ` + --nofollow-import-to=reportlab ` + --nofollow-import-to=pymupdf ` + --nofollow-import-to=fitz ` + --nofollow-import-to=fontTools ` + --nofollow-import-to=PIL ` + --nofollow-import-to=cv2 ` + --nofollow-import-to=moviepy ` + --nofollow-import-to=wordcloud ` + --nofollow-import-to=PyQt5 ` + --nofollow-import-to=PyQt6 ` + --nofollow-import-to=qfluentwidgets ` + --nofollow-import-to=scrapy ` + --nofollow-import-to=PyOfficeRobot ` + --nofollow-import-to=pospider ` + --nofollow-import-to=matplotlib ` + --nofollow-import-to=scipy ` + --nofollow-import-to=tkinter ` + --remove-output +$NuitkaExitCode = $LASTEXITCODE +$ErrorActionPreference = $PreviousErrorActionPreference + +if ($NuitkaExitCode -ne 0) { + exit $NuitkaExitCode +} + +if ($SkipDependencyCopy) { + exit 0 +} + +$DistRuntime = Join-Path $OutDir "run.dist" +$DistLib = Join-Path $DistRuntime "lib" +New-Item -ItemType Directory -Force -Path $DistLib | Out-Null + +$UsageGuide = Join-Path $Root "docs\使用教程.md" +if (Test-Path $UsageGuide) { + Copy-Item -LiteralPath $UsageGuide -Destination (Join-Path $DistRuntime "使用教程.md") -Force +} + +$copyDepsScript = @' +import importlib.metadata as md +import re +import shutil +import sys +from pathlib import Path + +try: + from packaging.requirements import Requirement +except Exception: + Requirement = None + +target = Path(sys.argv[1]) +roots = sys.argv[2:] +target.mkdir(parents=True, exist_ok=True) + +name_re = re.compile(r"^\s*([A-Za-z0-9_.-]+)") +seen = set() +queue = list(roots) +copied = [] + +def normalize(name: str) -> str: + return name.lower().replace("_", "-") + +def iter_runtime_requirements(requires): + for req in requires or []: + if Requirement is not None: + try: + parsed = Requirement(req) + except Exception: + parsed = None + if parsed is not None: + if parsed.marker and not parsed.marker.evaluate({"extra": ""}): + continue + yield parsed.name + continue + + match = name_re.match(req) + if match: + yield match.group(1) + +def safe_target_path(record_file): + rel = Path(record_file) + if rel.is_absolute() or any(part in ("..", "") for part in rel.parts): + print(f"[skip] unsafe RECORD path: {record_file}") + return None + return target / rel + +def should_skip_package_file(record_file): + rel = Path(record_file) + rel_text = rel.as_posix().lower() + if rel_text == "pandas/util/_tester.py" or rel_text.startswith("pandas/_testing/"): + return False + parts = {part.lower() for part in rel.parts} + if parts & {"__pycache__", "test", "tests", "testing", "doc", "docs", "example", "examples", "sample", "samples"}: + return True + name = rel.name.lower() + if name.endswith((".pyc", ".pyo", ".c", ".cpp", ".h", ".hpp", ".pxd", ".pyx")): + return True + if name in {"license", "copying", "authors", "contributors", "changelog"}: + return True + if name.endswith((".md", ".rst")): + return True + return False + +while queue: + raw_name = queue.pop(0) + key = normalize(raw_name) + if key in seen: + continue + try: + dist = md.distribution(raw_name) + except md.PackageNotFoundError: + print(f"[skip] distribution not found: {raw_name}") + seen.add(key) + continue + + seen.add(normalize(dist.metadata["Name"])) + files = list(dist.files or []) + if not files: + print(f"[warn] no RECORD files for: {dist.metadata['Name']}") + for file in files: + if should_skip_package_file(file): + continue + src = Path(dist.locate_file(file)) + if not src.exists(): + continue + dst = safe_target_path(file) + if dst is None: + continue + dst.parent.mkdir(parents=True, exist_ok=True) + if src.is_dir(): + if dst.exists(): + continue + shutil.copytree(src, dst, dirs_exist_ok=True) + else: + if dst.exists() and dst.stat().st_size == src.stat().st_size: + continue + shutil.copy2(src, dst) + copied.append(dist.metadata["Name"]) + + for dep in iter_runtime_requirements(dist.requires): + if normalize(dep) not in seen: + queue.append(dep) + +print(f"Copied {len(copied)} distributions into {target}") +for name in sorted(copied, key=str.lower): + print(f" - {name}") +'@ + +$roots = @( + "popdf", "poexcel", "pofile", "poimage", "poocr", "pomarkdown", + "poemail", "povideo", "wftools", "poprogress", "pocode", "poppt", + "poword", "search4file", "loguru" +) + +$copyDepsScript | python - $DistLib @roots +if ($LASTEXITCODE -ne 0) { + exit $LASTEXITCODE +} + +$copyStdlibScript = @' +import shutil +import sys +import sysconfig +from pathlib import Path + +target = Path(sys.argv[1]) +stdlib = Path(sysconfig.get_paths()["stdlib"]) +dlls = Path(sys.base_prefix) / "DLLs" + +skip_dirs = { + "__pycache__", "site-packages", "idlelib", "tkinter", "turtledemo", + "ensurepip", "venv", "lib2to3", "distutils", "test", "tests", +} + +def should_skip(path: Path) -> bool: + return any(part in skip_dirs for part in path.parts) + +def copy_file(src: Path, dst: Path) -> None: + dst.parent.mkdir(parents=True, exist_ok=True) + if dst.exists() and dst.stat().st_size == src.stat().st_size: + return + shutil.copy2(src, dst) + +count = 0 +for src in stdlib.rglob("*"): + rel = src.relative_to(stdlib) + if should_skip(rel): + continue + if src.is_dir(): + continue + if src.suffix.lower() not in {".py", ".pyi", ".txt", ".dat", ".pem"}: + continue + copy_file(src, target / rel) + count += 1 + +if dlls.is_dir(): + for src in dlls.iterdir(): + if src.name.lower().startswith(("_test", "_ctypes_test", "_tkinter")): + continue + if src.name.lower() in {"tcl86t.dll", "tk86t.dll"}: + continue + if src.is_file() and src.suffix.lower() in {".pyd", ".dll"}: + copy_file(src, target / src.name) + count += 1 + +print(f"Copied Python stdlib runtime files into {target}: {count}") +'@ + +$copyStdlibScript | python - $DistLib +if ($LASTEXITCODE -ne 0) { + exit $LASTEXITCODE +} + +$pruneScript = @' +import shutil +import sys +from pathlib import Path + +target = Path(sys.argv[1]) +remove_dirs = [ + "site-packages", "__pycache__", "idlelib", "tkinter", "turtledemo", + "ensurepip", "venv", "lib2to3", "distutils", "test", "tests", +] +remove_file_prefixes = ("_test", "_ctypes_test", "_tkinter") +remove_file_names = {"tcl86t.dll", "tk86t.dll", "pywin32.chm"} +remove_suffixes = {".pyc", ".pyo", ".c", ".cpp", ".h", ".hpp", ".pxd", ".pyx", ".md", ".rst"} + +removed = 0 +for name in remove_dirs: + path = target / name + if path.exists(): + shutil.rmtree(path, ignore_errors=True) + removed += 1 + +for path in list(target.rglob("*")): + if not path.exists(): + continue + if path.is_dir(): + rel_text = path.relative_to(target).as_posix().lower() + if path.name.lower() == "__pycache__": + shutil.rmtree(path, ignore_errors=True) + removed += 1 + continue + if rel_text.startswith("pandas/_testing"): + continue + if path.name.lower() in {"__pycache__", "test", "tests", "testing", "doc", "docs", "example", "examples", "sample", "samples"}: + shutil.rmtree(path, ignore_errors=True) + removed += 1 + continue + rel_text = path.relative_to(target).as_posix().lower() + if rel_text == "使用教程.md": + continue + if rel_text == "pandas/util/_tester.py" or rel_text.startswith("pandas/_testing/"): + continue + name = path.name.lower() + if name in remove_file_names or name.startswith(remove_file_prefixes) or path.suffix.lower() in remove_suffixes: + try: + path.unlink() + removed += 1 + except OSError: + pass + +print(f"Pruned runtime payload entries: {removed}") +'@ + +$pruneScript | python - $DistLib +if ($LASTEXITCODE -ne 0) { + exit $LASTEXITCODE +} + +$copyUsageGuideScript = @' +import shutil +import sys +from pathlib import Path + +root = Path(sys.argv[1]) +dist_runtime = Path(sys.argv[2]) +name = "\u4f7f\u7528\u6559\u7a0b.md" +source = root / "docs" / name +target = dist_runtime / name +if source.exists(): + shutil.copy2(source, target) + print(f"Copied usage guide: {target}") +else: + print(f"[warn] usage guide not found: {source}") +'@ + +$copyUsageGuideScript | python - $Root $DistRuntime +if ($LASTEXITCODE -ne 0) { + exit $LASTEXITCODE +} diff --git a/setup.cfg b/setup.cfg index 0deb58fd..de09e172 100644 --- a/setup.cfg +++ b/setup.cfg @@ -42,3 +42,17 @@ install_requires = python_requires = >=3.6 include_package_data = True zip_safe = False + +[options.extras_require] +gui = + PySide6>=6.6 +build-gui = + nuitka + +[options.entry_points] +console_scripts = + python-office-gui = gui.run:main + +[options.package_data] +gui = + assets/*

    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 K;>vVv!~P$IS`|6~ literal 0 HcmV?d00001 diff --git a/gui/assets/python-office.ico b/gui/assets/python-office.ico new file mode 100644 index 0000000000000000000000000000000000000000..59c8c1c4bbbeac85a67cae9853be27f123a38c7d GIT binary patch literal 57017 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:gslX*a7UcIfz;dtCH_`~+XlF)v@;ja&|dF1C97 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 JPDHLkV1lF7mLdQE literal 0 HcmV?d00001 diff --git a/gui/main_window.py b/gui/main_window.py new file mode 100644 index 00000000..403a36d3 --- /dev/null +++ b/gui/main_window.py @@ -0,0 +1,674 @@ +# -*- coding: utf-8 -*- +"""主窗口:左侧分类列表 + 右侧功能面板。""" + +from __future__ import annotations + +import sys +from pathlib import Path + +from PySide6.QtCore import QSize, Qt, Signal +from PySide6.QtGui import QAction, QColor, QKeySequence, QLinearGradient, QPainter, QPixmap +from PySide6.QtWidgets import ( + QButtonGroup, QHBoxLayout, QLabel, QMainWindow, QMessageBox, + QPushButton, QScrollArea, QSizePolicy, QSplitter, QStackedWidget, + QStatusBar, QToolButton, QVBoxLayout, QWidget, +) + +from gui import __version__ +from gui.panels import FeaturePage +from gui.registry import Category, Feature, build_registry, find_feature, resolve_feature +from gui.styles import ( + BLUE, BLUE_HOVER, BLUE_PRESS, BLUE_SOFT, LINE, RED, SIDEBAR_WIDTH, + SURFACE, TEXT, TEXT_MUTED, +) + + +APPLE_ICON_KINDS = { + "📕": "doc", + "📗": "grid", + "📘": "doc", + "📙": "deck", + "🖼️": "image", + "📁": "folder", + "🎬": "video", + "📧": "mail", + "🔎": "search", + "🛠️": "tool", + "💬": "chat", +} + +APPLE_ICON_ACCENTS = { + "📕": ("#F97316", "#FFF7ED"), + "📗": ("#0D9488", "#ECFDF5"), + "📘": ("#0284C7", "#E0F2FE"), + "📙": ("#F97316", "#FFF7ED"), + "🖼️": ("#0D9488", "#ECFDF5"), + "📁": ("#0F766E", "#F0FDFA"), + "🎬": ("#0284C7", "#E0F2FE"), + "📧": ("#0D9488", "#ECFDF5"), + "🔎": ("#F97316", "#FFF7ED"), + "🛠️": ("#0F766E", "#F0FDFA"), + "💬": ("#10B981", "#ECFDF5"), +} + + +class HeaderLabel(QLabel): + """侧栏分类 header:可点击切换折叠状态(▶/▼)。 + + 自绘文字(完全控制 layout → 箭头精准左对齐)+ override 完整的 mouse 事件: + - press → 记录按下状态 + - release 在 label 内 → emit clicked + - release 在 label 外 → 取消 + - move → 更新 hover/pressed 视觉效果 + QLabel 默认 mouseRelease 传给父,必须 override 才能响应点击。 + """ + + clicked = Signal() + + def __init__(self, icon: str, title: str, expanded: bool = False, parent=None): + super().__init__(parent) + self._icon_text = icon + self._icon_kind = APPLE_ICON_KINDS.get(icon, "app") + self._accent_color, self._accent_soft = APPLE_ICON_ACCENTS.get( + icon, (BLUE, BLUE_SOFT) + ) + self._title_text = title + self._expanded = expanded + self._hover = False + self._pressed = False + self.setCursor(Qt.PointingHandCursor) + self.setFixedHeight(40) + # 启用 mouse tracking(让 mouseMove / leave / enter 事件正常触发) + self.setMouseTracking(True) + # 透明背景(让 styles.py 控制 hover / checked) + self.setStyleSheet("QLabel#sidebarCategoryHeader { background: transparent; border: none; }") + + def set_expanded(self, expanded: bool) -> None: + """设置折叠/展开状态(重绘)。""" + self._expanded = expanded + self.update() + + def is_expanded(self) -> bool: + return self._expanded + + @staticmethod + def _draw_apple_icon(p, rect, kind: str, color: QColor) -> None: + from PySide6.QtCore import QPointF, QRectF + from PySide6.QtGui import QPainterPath, QPen, QPolygonF + + pen = QPen(color, 1.55) + pen.setCapStyle(Qt.RoundCap) + pen.setJoinStyle(Qt.RoundJoin) + p.setPen(pen) + p.setBrush(Qt.NoBrush) + + x, y, w, h = rect.x(), rect.y(), rect.width(), rect.height() + + if kind in ("doc", "app"): + p.drawRoundedRect(QRectF(x + 6, y + 4, w - 12, h - 8), 3, 3) + p.drawLine(QPointF(x + 10, y + 10), QPointF(x + w - 10, y + 10)) + p.drawLine(QPointF(x + 10, y + 14), QPointF(x + w - 13, y + 14)) + return + + if kind == "grid": + p.drawRoundedRect(QRectF(x + 5, y + 5, w - 10, h - 10), 3, 3) + p.drawLine(QPointF(x + w / 2, y + 5), QPointF(x + w / 2, y + h - 5)) + p.drawLine(QPointF(x + 5, y + h / 2), QPointF(x + w - 5, y + h / 2)) + return + + if kind == "deck": + p.drawRoundedRect(QRectF(x + 5, y + 6, w - 10, h - 11), 3, 3) + p.drawLine(QPointF(x + 11, y + h - 4), QPointF(x + w - 11, y + h - 4)) + p.drawLine(QPointF(x + w / 2, y + h - 5), QPointF(x + w / 2, y + h - 2)) + return + + if kind == "image": + box = QRectF(x + 5, y + 5, w - 10, h - 10) + p.drawRoundedRect(box, 3, 3) + p.drawEllipse(QRectF(x + w - 13, y + 8, 3.5, 3.5)) + mountain = QPainterPath() + mountain.moveTo(x + 8, y + h - 7) + mountain.lineTo(x + 14, y + 13) + mountain.lineTo(x + 18, y + h - 8) + mountain.lineTo(x + 21, y + 15) + mountain.lineTo(x + w - 7, y + h - 7) + p.drawPath(mountain) + return + + if kind == "folder": + path = QPainterPath() + path.moveTo(x + 5, y + 9) + path.lineTo(x + 13, y + 9) + path.lineTo(x + 16, y + 12) + path.lineTo(x + w - 5, y + 12) + path.lineTo(x + w - 5, y + h - 5) + path.lineTo(x + 5, y + h - 5) + path.closeSubpath() + p.drawPath(path) + return + + if kind == "video": + p.drawRoundedRect(QRectF(x + 5, y + 5, w - 10, h - 10), 3, 3) + tri = QPolygonF([ + QPointF(x + 14, y + 10), + QPointF(x + 14, y + h - 10), + QPointF(x + w - 12, y + h / 2), + ]) + p.setBrush(color) + p.drawPolygon(tri) + p.setBrush(Qt.NoBrush) + return + + if kind == "mail": + box = QRectF(x + 5, y + 7, w - 10, h - 12) + p.drawRoundedRect(box, 3, 3) + p.drawLine(QPointF(x + 6, y + 9), QPointF(x + w / 2, y + 15)) + p.drawLine(QPointF(x + w - 6, y + 9), QPointF(x + w / 2, y + 15)) + return + + if kind == "search": + p.drawEllipse(QRectF(x + 7, y + 6, 11, 11)) + p.drawLine(QPointF(x + 17, y + 17), QPointF(x + 23, y + 23)) + return + + if kind == "tool": + for i, yy in enumerate((8, 14, 20)): + p.drawLine(QPointF(x + 6, y + yy), QPointF(x + w - 6, y + yy)) + knob_x = x + (12 if i == 0 else 20 if i == 1 else 15) + p.drawEllipse(QRectF(knob_x - 2, y + yy - 2, 4, 4)) + return + + if kind == "chat": + bubble = QPainterPath() + bubble.addRoundedRect(QRectF(x + 5, y + 5, w - 10, h - 12), 5, 5) + bubble.moveTo(x + 12, y + h - 8) + bubble.lineTo(x + 10, y + h - 4) + bubble.lineTo(x + 16, y + h - 8) + p.drawPath(bubble) + + def paintEvent(self, event): + from PySide6.QtCore import QPointF, QRectF + from PySide6.QtGui import QColor, QFont, QPainter, QPainterPath, QPen + + p = QPainter(self) + p.setRenderHint(QPainter.Antialiasing, True) + p.setRenderHint(QPainter.TextAntialiasing, True) + + rect = self.rect() + + bg_rect = rect.adjusted(0, 2, 0, -2) + path = QPainterPath() + path.addRoundedRect(QRectF(bg_rect), 10.0, 10.0) + + # 1) 背景(按 hover / pressed / expanded 状态) + if self._pressed: + bg = QColor("#CCFBF1") + elif self._hover or self._expanded: + bg = QColor(self._accent_soft if self._expanded else "#F0FDFA") + else: + bg = QColor("transparent") + if bg.alpha() > 0: + p.fillPath(path, bg) + + # 2) Apple-like chevron + monochrome badge + title. + chevron_pen = QPen(QColor(self._accent_color if self._expanded else "#7A9A95"), 1.8) + chevron_pen.setCapStyle(Qt.RoundCap) + chevron_pen.setJoinStyle(Qt.RoundJoin) + p.setPen(chevron_pen) + cy = rect.center().y() + if self._expanded: + p.drawLine(QPointF(15, cy - 3), QPointF(19, cy + 1)) + p.drawLine(QPointF(19, cy + 1), QPointF(23, cy - 3)) + else: + p.drawLine(QPointF(16, cy - 4), QPointF(21, cy)) + p.drawLine(QPointF(21, cy), QPointF(16, cy + 4)) + + badge_w = 34 + badge_rect = QRectF(30, cy - 11, badge_w, 22) + badge_path = QPainterPath() + badge_path.addRoundedRect(badge_rect, 7.0, 7.0) + p.fillPath(badge_path, QColor("#FFFFFF" if self._expanded else self._accent_soft)) + p.setPen(QPen(QColor(self._accent_color if self._expanded else "#B8D9D3"), 1.0)) + p.drawPath(badge_path) + self._draw_apple_icon( + p, + badge_rect, + self._icon_kind, + QColor(self._accent_color if self._expanded else "#5F7F7A"), + ) + + font = QFont(self.font()) + font.setPointSize(12) + font.setWeight(QFont.DemiBold) + p.setFont(font) + + # 颜色 + if self._expanded: + p.setPen(QColor(self._accent_color)) + else: + p.setPen(QColor(TEXT_MUTED)) + + text_rect = rect.adjusted(78, 0, -8, 0) + p.drawText(text_rect, int(Qt.AlignLeft | Qt.AlignVCenter), self._title_text) + + p.end() + + def mousePressEvent(self, event): + if event.button() == Qt.LeftButton: + self._pressed = True + self.update() + + def mouseReleaseEvent(self, event): + if event.button() == Qt.LeftButton and self._pressed: + self._pressed = False + # 只在 release 时鼠标仍在 label 内才触发 click + if self.rect().contains(event.pos()): + self.clicked.emit() + self.update() + + def mouseMoveEvent(self, event): + # 鼠标在 label 内移动(hover 效果) + was_hover = self._hover + self._hover = self.rect().contains(event.pos()) + if was_hover != self._hover: + self.update() + + def enterEvent(self, event): + self._hover = True + self.update() + + def leaveEvent(self, event): + self._hover = False + # 如果按下时鼠标离开,取消按下状态 + if self._pressed: + self._pressed = False + self.update() + + +class FeatureLabel(QToolButton): + """侧栏二级功能按钮:自绘背景和文字,确保文本稳定左对齐。""" + + def __init__(self, title: str, feature_id: str, expanded_parents: bool = False, parent=None): + super().__init__(parent) + self._title_text = title + self._feature_id = feature_id + self._hover = False + self.setText(title) + self.setCheckable(True) + self.setCursor(Qt.PointingHandCursor) + self.setFixedHeight(38) + self.setMouseTracking(True) + self.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed) + + def paintEvent(self, event): + from PySide6.QtCore import QRectF + from PySide6.QtGui import QColor, QFont, QLinearGradient, QPainter, QPainterPath + + p = QPainter(self) + p.setRenderHint(QPainter.Antialiasing, True) + p.setRenderHint(QPainter.TextAntialiasing, True) + + rect = self.rect() + bg_rect = rect.adjusted(0, 1, 0, -1) + path = QPainterPath() + path.addRoundedRect(QRectF(bg_rect), 12.0, 12.0) + + if self.isChecked(): + bg = QColor("#F97316" if not self._hover else "#FB923C") + border = QColor("#FED7AA") + text = QColor("#FFFFFF") + weight = QFont.ExtraBold + elif self.isDown(): + bg = QColor("#0F766E") + border = QColor("#0F766E") + text = QColor("#FFFFFF") + weight = QFont.Bold + elif self._hover: + bg = QColor("#F0FDFA") + border = QColor("#99F6E4") + text = QColor(TEXT) + weight = QFont.DemiBold + else: + bg = QColor("transparent") + border = QColor("transparent") + text = QColor(TEXT_MUTED) + weight = QFont.Medium + + if bg.alpha() > 0: + p.fillPath(path, bg) + p.setPen(border) + p.drawPath(path) + + font = QFont(self.font()) + font.setPointSize(12) + font.setWeight(weight) + p.setFont(font) + p.setPen(text) + text_rect = rect.adjusted(24, 0, -10, 0) + p.drawText(text_rect, int(Qt.AlignLeft | Qt.AlignVCenter), self._title_text) + p.end() + + def enterEvent(self, event): + self._hover = True + self.update() + super().enterEvent(event) + + def leaveEvent(self, event): + self._hover = False + self.update() + super().leaveEvent(event) + + +class TitleBlock(QWidget): + """侧栏顶部标题块:简洁品牌卡。""" + + def __init__(self, version: str = "", parent=None): + super().__init__(parent) + self._version = version # 保留参数以兼容旧调用,但不再渲染 + self._icon_pixmap = QPixmap(str(Path(__file__).resolve().parent / "assets" / "python-office-icon.png")) + self.setObjectName("sidebarTitleBlock") + self.setFixedHeight(92) + from PySide6.QtWidgets import QSizePolicy + sp = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed) + self.setSizePolicy(sp) + + def paintEvent(self, event): + from PySide6.QtCore import QRectF + from PySide6.QtGui import QColor, QFont, QPainter, QPainterPath + + p = QPainter(self) + p.setRenderHint(QPainter.Antialiasing, True) + + rect = self.rect() + radius = 16.0 + margin = 10 + inner_rect = rect.adjusted(margin, margin, -margin, -margin) + path = QPainterPath() + path.addRoundedRect(QRectF(inner_rect), radius, radius) + grad = QLinearGradient(inner_rect.left(), inner_rect.top(), inner_rect.right(), inner_rect.bottom()) + grad.setColorAt(0.0, QColor("#FFFFFF")) + grad.setColorAt(0.58, QColor("#F0FDFA")) + grad.setColorAt(1.0, QColor("#FFF7ED")) + p.fillPath(path, grad) + p.setPen(QColor("#99F6E4")) + p.drawPath(path) + + icon_rect = QRectF(inner_rect.left() + 14, inner_rect.top() + 16, 38, 38) + if not self._icon_pixmap.isNull(): + p.drawPixmap(icon_rect.toRect(), self._icon_pixmap) + else: + dot_rect = QRectF(inner_rect.left() + 18, inner_rect.top() + 22, 12, 12) + dot_path = QPainterPath() + dot_path.addEllipse(dot_rect) + p.fillPath(dot_path, QColor(RED)) + + title_font = QFont(self.font()) + title_font.setPointSize(16) + title_font.setWeight(QFont.Bold) + p.setFont(title_font) + p.setPen(QColor(TEXT)) + p.drawText(inner_rect.adjusted(62, 13, -16, -34), int(Qt.AlignLeft | Qt.AlignVCenter), "python-office") + + sub_font = QFont(self.font()) + sub_font.setPointSize(10) + sub_font.setWeight(QFont.Medium) + p.setFont(sub_font) + p.setPen(QColor(TEXT_MUTED)) + p.drawText(inner_rect.adjusted(62, 42, -16, -10), int(Qt.AlignLeft | Qt.AlignVCenter), f"Automation Studio v{self._version}") + + p.end() + + +class MainWindow(QMainWindow): + """GUI 入口窗口。""" + + def __init__(self): + super().__init__() + self.setWindowTitle("python-office · 图形界面") + self.resize(1920, 1080) + self.setMinimumSize(1280, 720) + + self._categories: list[Category] = build_registry() + self._pages: dict[str, FeaturePage] = {} + + self._build_ui() + self._populate_sidebar() + self._select_first_category() + + # ----- UI 构建 ----- + @staticmethod + def _make_gradient_pixmap(width: int, height: int) -> QPixmap: + """生成一个 湖蓝→浅蓝 上→下渐变 pixmap。""" + pix = QPixmap(width, height) + painter = QPainter(pix) + grad = QLinearGradient(0, 0, 0, height) + grad.setColorAt(0.0, QColor("#F0FDFA")) + grad.setColorAt(0.62, QColor("#ECFEFF")) + grad.setColorAt(1.0, QColor("#FFF7ED")) + painter.fillRect(0, 0, width, height, grad) + painter.end() + return pix + + def _build_ui(self): + central = QWidget() + central.setObjectName("centralWidget") + self.setCentralWidget(central) + + outer = QHBoxLayout(central) + outer.setContentsMargins(0, 0, 0, 0) + outer.setSpacing(0) + + splitter = QSplitter(Qt.Horizontal) + splitter.setHandleWidth(1) + splitter.setChildrenCollapsible(False) + + # 侧边栏 + self._sidebar = QWidget() + self._sidebar.setObjectName("sidebar") + self._sidebar.setFixedWidth(SIDEBAR_WIDTH) + sb_lay = QVBoxLayout(self._sidebar) + sb_lay.setContentsMargins(0, 0, 0, 0) + sb_lay.setSpacing(0) + + title_block = TitleBlock(__version__) + title_block.setObjectName("sidebarTitleBlock") + sb_lay.addWidget(title_block) + + self._category_list = QScrollArea() + self._category_list.setObjectName("categoryList") + self._category_list.setWidgetResizable(True) + self._category_list.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) + self._sidebar_inner = QWidget() + self._sidebar_inner.setObjectName("sidebarInner") + self._sidebar_layout = QVBoxLayout(self._sidebar_inner) + self._sidebar_layout.setContentsMargins(12, 8, 12, 12) + self._sidebar_layout.setSpacing(2) + self._category_list.setWidget(self._sidebar_inner) + self._feature_buttons: list[QToolButton] = [] + # 每个分类的折叠组:{分类id: (header按钮, [功能按钮列表])} + self._category_groups: dict[str, tuple[HeaderLabel, list[QToolButton]]] = {} + self._feature_button_group = QButtonGroup(self) + self._feature_button_group.setExclusive(True) + sb_lay.addWidget(self._category_list, 1) + + author_label = QLabel("主程序:程序员晚枫\n图形设计:倚栏听雨") + author_label.setObjectName("sidebarAuthor") + author_label.setAlignment(Qt.AlignLeft | Qt.AlignVCenter) + author_label.setFixedHeight(58) + sb_lay.addWidget(author_label) + + splitter.addWidget(self._sidebar) + + # 主区 + self._stack = QStackedWidget() + self._stack.setObjectName("pages") + splitter.addWidget(self._stack) + splitter.setStretchFactor(0, 0) + splitter.setStretchFactor(1, 1) + splitter.setSizes([SIDEBAR_WIDTH, 1656]) + + outer.addWidget(splitter) + + # 状态栏 + self.setStatusBar(QStatusBar()) + self.statusBar().showMessage("就绪") + + # 菜单 + self._build_menu() + + def _build_menu(self): + reload_action = QAction("刷新注册表", self) + reload_action.setShortcut(QKeySequence("F5")) + reload_action.triggered.connect(self._reload_registry) + + about_action = QAction("关于", self) + about_action.triggered.connect(self._show_about) + + quit_action = QAction("退出", self) + quit_action.setShortcut(QKeySequence.Quit) + quit_action.triggered.connect(self.close) + + menubar = self.menuBar() + file_menu = menubar.addMenu("文件") + file_menu.addAction(reload_action) + file_menu.addSeparator() + file_menu.addAction(quit_action) + + help_menu = menubar.addMenu("帮助") + help_menu.addAction(about_action) + + # ----- 数据填充 ----- + def _populate_sidebar(self): + # 清空旧 layout + while self._sidebar_layout.count(): + item = self._sidebar_layout.takeAt(0) + w = item.widget() + if w is not None: + w.deleteLater() + self._feature_buttons.clear() + if hasattr(self, "_category_groups"): + self._category_groups.clear() + + # QStackedWidget 没有 clear():手动逐个移除 + while self._stack.count(): + w = self._stack.widget(0) + self._stack.removeWidget(w) + w.deleteLater() + self._pages.clear() + + for cat in self._categories: + # 分类 header:可点击切换折叠 + # 用 QLabel + 配合自绘点击事件(避免 QPushButton 默认文字居中问题) + header_btn = HeaderLabel(cat.icon, cat.title, expanded=False) + header_btn.setObjectName("sidebarCategoryHeader") + header_btn.setProperty("role", "categoryHeader") + header_btn.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed) + header_btn.setProperty("expanded", False) + # 点击 → 折叠/展开 + header_btn.clicked.connect(lambda cid=cat.id: self._toggle_category(cid)) + self._sidebar_layout.addWidget(header_btn) + + # 收集此分类下所有功能按钮 + cat_buttons = [] + for feat in cat.features: + btn = FeatureLabel(feat.title, feat.id, expanded_parents=False) + btn.setObjectName("sidebarFeatureBtn") + btn.setProperty("featureId", feat.id) + # 默认折叠:所有功能按钮隐藏 + btn.setVisible(False) + btn.clicked.connect(lambda _=False, fid=feat.id: self._on_feature_clicked(fid)) + self._feature_button_group.addButton(btn) + self._feature_buttons.append(btn) + self._sidebar_layout.addWidget(btn) + cat_buttons.append(btn) + + # 把这个分类的按钮列表存起来,header 切换时用 + self._category_groups[cat.id] = (header_btn, cat_buttons) + + self._sidebar_layout.addStretch(1) + + def _ensure_page(self, feat: Feature) -> FeaturePage: + page = self._pages.get(feat.id) + if page is not None: + return page + resolved = resolve_feature(feat) + page = FeaturePage(resolved, self) + self._stack.addWidget(page) + self._pages[feat.id] = page + return page + + @staticmethod + def _write_header_text(header_btn, expanded: bool): + """更新 HeaderLabel 的 expanded 状态(触发重绘)。""" + if hasattr(header_btn, "set_expanded"): + header_btn.set_expanded(expanded) + header_btn.setProperty("expanded", expanded) + + def _toggle_category(self, cat_id: str): + """点击分类 header:切换该分类下所有功能按钮的可见性。""" + if not hasattr(self, "_category_groups"): + return + group = self._category_groups.get(cat_id) + if not group: + return + header_btn, buttons = group + # 切换状态 + new_expanded = not header_btn.is_expanded() if hasattr(header_btn, "is_expanded") else True + self._write_header_text(header_btn, expanded=new_expanded) + for btn in buttons: + btn.setVisible(new_expanded) + + def _on_feature_clicked(self, feature_id: str): + feat = find_feature(self._categories, feature_id) + if not feat: + return + self._show_feature(feat) + cat = next( + (c for c in self._categories if any(f.id == feature_id for f in c.features)), + None, + ) + if cat: + self.statusBar().showMessage( + f"分类:{cat.title} · 功能:{feat.title}" + ) + + def _select_first_category(self): + if self._feature_buttons: + if self._categories and self._categories[0].features: + self._show_feature(self._categories[0].features[0]) + + def _show_feature(self, feat: Feature): + page = self._ensure_page(feat) + idx = self._stack.indexOf(page) + if idx >= 0: + self._stack.setCurrentIndex(idx) + + def _reload_registry(self): + self._categories = build_registry() + self._populate_sidebar() + self._select_first_category() + self.statusBar().showMessage("注册表已刷新", 3000) + + def _show_about(self): + QMessageBox.about( + self, + "关于 python-office GUI", + f"