标签: python

  • 开源Office Word格式转换工具

    开源Office Word格式转换工具

    Open Source Office Word Document Format Converter

    批量将 Word 旧版 .doc 文件转换为新版 .docx 格式 — 基于 Tkinter 与 Word COM 的 Windows 桌面小工具。

    License: MulanPSL-2.0 Python 3.14+ Platform: Windows Version


    📖 项目简介 / Overview

    开源Office Word格式转换工具 是由 技术奇客 ITGeeker.net 出品的 Office 系列小工具,专门解决企业、政务与教育场景下的 Word 旧格式兼容问题 —— 当你面对成百上千份历史遗留的 .doc 文件时,逐个用 Word 打开再"另存为"效率极低,本工具一键批量转换。

    Batch-convert legacy Word .doc files to modern .docx format — a Tkinter + Word COM based Windows desktop utility.

    🎯 解决什么痛点

    • 🏢 企业迁移:旧系统留下的 .doc 文档需要快速升级到 .docx
    • 📦 批量处理:一次扫描整个目录(含子目录),挑选后一键转换
    • 💾 失败可查:损坏的 .doc 不中断任务,失败列表单独导出
    • 🎨 现代化 UI:森林主题(明/暗)+ 系统托盘,操作不打扰当前工作

    ✨ 核心特性 / Features

    • 🖱️ 一键批量转换 — 选定目录后列出所有 .doc(可含子目录),多选后后台线程并发处理,UI 不卡顿
    • 🛡️ 失败容忍 — 单个文件损坏不会中断整个任务;失败列表写入 %USERPROFILE%\itgeeker_widget_config\config_doctodocx_failed.json
    • 🎨 Forest 主题 — 采用 rdbende/Forest-ttk-theme,支持一键切换明/暗
    • 🖥️ 系统托盘 — 关闭窗口最小化到托盘,右键菜单含彩色 Emoji 图标(🏠 显示 / 🙈 隐藏 / ℹ️ 关于 / 🚪 退出)
    • 💾 状态持久化 — 自动记忆窗口位置/大小、上次目录、暗黑偏好、选中文件列表
    • 📦 零依赖 EXE — PyInstaller 单文件打包,含完整 Windows 版本信息(公司/版权/网址),无需 Python 环境即可运行
    • 🩺 统一版本元数据__version__ 单一来源,GUI 关于标签 / PyInstaller 版本信息 / pyproject.toml 自动同步
    • 🪟 关于对话框 — 单实例、含可点击超链接 https://www.itgeeker.net

    📸 效果演示 / Demo

    暗黑主题

    暗黑主题

    明亮主题

    明亮主题

    系统托盘(含彩色 Emoji 图标)
    (截图占位 — 运行 dist/ITGeekerConvertDocToDocx_v2.0.0.1.exe 后右键托盘查看)


    🚀 快速上手 / Getting Started

    1️⃣ 环境准备 / Prerequisites

    项目要求
    操作系统Windows 10 / 11
    Microsoft Office2003 或更高版本(需 Word,工具通过 COM 调用)
    Python(仅源码运行)3.14+
    包管理工具(推荐)uv

    2️⃣ 安装 / Installation

    方式 A:直接下载 EXE(推荐普通用户)

    Releases 页面下载最新的 ITGeekerConvertDocToDocx_v{version}.exe,双击运行即可。

    方式 B:从源码运行(推荐开发者)

    # 克隆仓库
    git clone https://github.com/alanljj/itgeeker_convert_doc_to_docx.git
    cd itgeeker_convert_doc_to_docx
    
    # uv 会自动创建 .venv/ 并安装依赖(pywin32 等)
    uv sync
    
    # 启动 GUI(任意工作目录均可执行)
    uv run main.py

    启动成功后会在右下角系统托盘出现 🟠 图标,同时弹出主窗口。

    3️⃣ 使用示例 / Usage

    GUI 操作流程:

    1. 点击 「选择目录」 选择含 .doc 文件的目录
    2. 勾选 「包含子目录」(可选)刷新列表
    3. 在文件列表中 多选 需要转换的文件(Ctrl/Shift 多选)
    4. 点击 「开始转换」,后台线程开始处理
    5. 完成后弹窗显示成功 / 失败数量,失败文件列表已自动写入 JSON

    命令行启动方式(三选一):

    # 方式一:根目录入口脚本(推荐,最直观)
    uv run main.py
    
    # 方式二:通过 pyproject.toml [project.scripts] 注册的命令
    uv run convert-doc-to-docx
    
    # 方式三:以模块形式调用
    uv run python -m app

    ⚙️ 配置说明 / Configuration

    应用无需任何手动配置即可运行。所有用户偏好自动持久化到:

    文件内容
    %USERPROFILE%\itgeeker_widget_config\config_doctodocx.json窗口几何、上次目录、主题偏好、文件列表
    %USERPROFILE%\itgeeker_widget_config\config_doctodocx_failed.json上次失败的 .doc 文件列表(仅在有失败时生成)

    💡 itgeeker_widget_config 子目录供多个 ITGeeker 工具共享,便于集中备份。


    🛠️ 开发与发布 / Development & Release

    项目结构

    itgeeker_convert_doc_to_docx/
    ├── _meta.py / app.py / conversion.py / gui.py / main.py
    │   └── persistence.py / theme.py / tray.py
    ├── assets\                    # 打包资源
    │   ├── geekercloud_orange32.ico
    │   ├── geekercloud_orange32.png
    │   ├── converdoc_dark.png
    │   └── converdoc_light.png
    ├── resources\                 # Forest 运行时主题
    │   ├── forest-light.tcl + forest-light/*.png  (70)
    │   └── forest-dark.tcl  + forest-dark/*.png   (68)
    ├── scripts\build_exe.py       # PyInstaller 打包脚本
    ├── tests\                     # 54 个单元测试
    ├── pyproject.toml             # PEP 621 元数据 + hatch 构建
    ├── README.md
    └── LICENSE                     # MulanPSL-2.0

    标准流程

    # 1. 修改代码后,先用 Python 主文件测试
    uv run main.py
    
    # 2. 静态检查 + 单元测试
    uv run ruff check .
    uv run pytest
    
    # 3. 静态检查通过后,按需打包(不是每次都打包)
    uv sync --extra build
    uv run python scripts/build_exe.py
    # 输出:dist/ITGeekerConvertDocToDocx_v{version}.exe

    ⚠️ 打包是手动操作 — 不会自动触发。修改代码后请按上面 1-2 步测试,通过后才打包。

    依赖 / Tech Stack

    类型说明
    运行时pywin32调用 Word COM 转换 .doc.docx
    运行时infi-systrayWindows 系统托盘(原生 Win32,支持菜单项彩色 Emoji 图标)
    运行时Pillow彩色 Emoji 渲染 + PNG/ICO 处理
    运行时Tkinter (stdlib)GUI + 主题
    开发pytest54 个单元测试
    开发ruff静态检查(PEP 8 / pyupgrade / bugbear 等)
    打包pyinstaller单文件 EXE

    🤝 贡献指南 / Contributing

    欢迎贡献代码、报告 Bug 或改进文档!

    1. Fork 本仓库到你的账号
    2. 创建特性分支:git checkout -b feat/your-feature
    3. 提交代码:git commit -m "feat: add your feature"
    4. 推送到你的 Fork:git push origin feat/your-feature
    5. 在 GitHub / Gitee 上发起 Pull Request

    📌 开发纪律(来自项目记忆):

    不要随意删除项目目录里不是你创建的文件(详见 [[no-deletions]])

    修改前先 uv run pytest 跑通全部 54 个测试

    提交前 uv run ruff check . 无警告


    📜 开源协议 / License

    本项目采用 木兰宽松许可证 第2版 (MulanPSL-2.0) 开源。

    Copyright (c) 2023 技术奇客ITGeeker.net
    https://www.itgeeker.net

    详见 LICENSE 文件。


    📝 更新日志 / Changelog

    v2.0.0.1(2026-07-28)

    1. 🐛 修复:剥离 infi.systray 自动追加的 Quit 菜单项(其 callback 是字符串,点会抛 TypeError)
    2. 🐛 修复:托盘退出时不能 join 自己线程;改用 os._exit(0) 强制终止进程,确保「关于」窗口同时关闭
    3. 📦 EXE 文件名格式改为 ITGeekerConvertDocToDocx_v{version}.exe
    4. 🏠 修复:传 ICO 而非 PNG 给 infi.systray.SysTrayIcon(之前显示默认图标)
    5. 🪟 关于对话框改为单实例
    6. 🐛 修复:Path.decodedict.add 错误(infi.systray 菜单更新)

    v2.0.0.0(2026-07-28)

    1. ✨ 系统托盘:彩色 Emoji 图标 + 切换显示/隐藏 + 单实例关于对话框
    2. ✨ 窗口位置/大小持久化:退出时保存,下次启动自动恢复
    3. ✨ 关于对话框:可点击超链接 https://www.itgeeker.net
    4. ✨ Forest 主题:明/暗切换 + 高 DPI ICO(16/32/48 多尺寸)
    5. 🔧 重构为根级 Python 包:app / conversion / gui / persistence / theme / tray
    6. 🔧 转换改为后台线程 + after() 轮询,UI 不再冻结
    7. 🔧 JSON 写入改为 tempfile + os.replace 原子化,旧中文字段 100% 兼容
    8. 🔧 主题资源(forest-light/dark tcl + 138 PNG + 图标)移入包内,CWD 无关
    9. 🔧 消除 geekerWin / style 模块级全局变量
    10. 🔧 默认窗口宽度改为 975px,标题栏/托盘使用统一图标
    11. 📦 PyInstaller 打包脚本:单文件 EXE,附带完整 Windows 版本信息
    12. 📦 54 个单元测试(persistence / conversion / tray / metadata)
    13. 🔧 修复 push.py(Python 2 raw_input → Python 3 input,加 __main__ 守卫)

    v1.0.2.0(2023-06-13)

    1. ✨ 增加文件计数,并一同保存和预读
    2. 🔧 改写转换接口,当碰到错误文件时,记录错误,但并不中断继续转换
    3. ✨ 弹窗显示成功和失败的数量,及失败的文件列表,便于移除错误文件

    v1.0.1.0(2023-06-12)

    1. 🐛 修复 Icon 文件错误问题,改用 base64 格式
    2. 📦 由于 PyInstaller 打包问题,改为安装包发行

    v1.0.0.0(2023-06-11)

    1. 🎉 工具首发并已开源。

    🔗 相关链接 / Links


    Made with ❤️ by 技术奇客 ITGeeker

    Copyright © 2023-present · MulanPSL-2.0

  • ITGeeker Gold Widget v1.3.3.0:Python 桌面小组件,实时盯沪金 Au9999 与国际金价

    ITGeeker Gold Widget v1.3.3.0:Python 桌面小组件,实时盯沪金 Au9999 与国际金价

    🧈 ITGeeker Gold Widget

    Version v1.3.3.0
    Python 3.14+
    Windows 10/11
    MIT License

    Gitee 仓库 · Github 仓库 · 问题反馈 · ITGeeker 主页


    项目简介

    ITGeeker Gold Widget 是一款开源的桌面黄金价格小组件。它把沪金 Au9999 与国际金价浓缩成一个小巧的桌面浮窗,常驻屏幕一角,让你不用反复打开浏览器或行情 App,也能随时瞥一眼当前金价、涨跌与行情来源。

    小组件默认显示人民币 / 克(Au9999 沪金)的实时行情,也支持一键切换到美元 / 盎司观察国际金价。所有偏好(窗口位置、配色、刷新频率、货币单位、是否开机自启等)都会自动保存,下次启动时按习惯恢复。界面基于 PySide6 构建,外观是无边框、透明、可拖动、可调整大小的悬浮卡片,并提供完整的系统托盘菜单,方便隐藏、刷新、置顶或退出。

    ⚠️ 数据来源声明:界面展示的行情来自第三方公开接口(新浪财经、GoldPrice.org、Yahoo Finance),可能受网络状态与接口限制影响,仅作日常观察参考,不构成任何投资建议


    核心特性

    • 💱 双币种一键切换:内置「人民币 / 克(CNY)」与「美元 / 盎司(USD)」两种行情模式,按钮即点即换。
    • 📈 完整行情视图:同屏展示当前价、涨跌额、涨跌幅、开盘价、最高价、最低价与上一次收盘价。
    • 🔁 三级数据源自动回退:CNY 模式按「新浪 Au9999 → GoldPrice.org → Yahoo Finance(汇率换算)」依次尝试;USD 模式按「Yahoo GC=F → GoldPrice.org」依次尝试。
    • ⏱️ 可调刷新频率:在设置对话框内调整刷新间隔,范围 10 秒到 1 小时(默认 60 秒)。
    • 🪟 无边框透明浮窗:圆角玻璃质感,支持鼠标拖动移动,右下角拖拽调整大小,可选窗口置顶。
    • 🎨 可视化自定义:自定义背景色、背景透明度(30~255)、文字颜色与字体大小(8~32 px)。
    • 🖥️ 系统托盘常驻:托盘图标双击显示 / 隐藏窗口,右键菜单提供刷新、置顶、设置、官网、版本、退出等操作。
    • 💾 配置自动持久化:所有偏好写入本地 JSON,下次启动自动恢复窗口位置、大小与外观。
    • 🚀 Windows 开机自启:一键写入 HKCU\Software\Microsoft\Windows\CurrentVersion\Run,随系统后台常驻。

    效果演示

    ITGeeker Gold Widget 桌面浮窗效果 - Windows 11 桌面右下角金价小组件
    桌面一角的金价浮窗,支持拖动、置顶与个性化配色(默认尺寸 360×220)

    快速上手

    环境准备

    • 操作系统:Windows 10 或 Windows 11
    • Python:3.14 或更高版本(参考 pyproject.tomlrequires-python
    • 依赖库:PySide6(>= 6.11.1)、requests(>= 2.34.2)
    • 网络:首次运行需要联网以拉取金价行情

    如果你的本地 Python 版本低于 3.14,建议通过官方安装包升级后再继续。

    安装步骤

    以下命令在 Windows PowerShell 中执行即可,开箱即用:

    # 1. 克隆仓库
    git clone https://gitee.com/itgeeker/itgeeker_gold_widget.git
    
    # 2. 进入项目目录
    cd itgeeker_gold_widget
    
    # 3. 创建并激活虚拟环境
    python -m venv .venv
    .\.venv\Scripts\Activate.ps1
    
    # 4. 安装依赖
    python -m pip install -r requirements.txt
    

    使用示例

    启动桌面小组件:

    # 在已激活的虚拟环境中执行
    python main.py
    

    启动后,桌面上会出现一个半透明浮窗。常见交互:

    • 左键拖动:移动浮窗到任意位置
    • 右下角拖拽:调整浮窗大小
    • 右键菜单:刷新、设置、置顶、退出
    • 双击托盘图标:显示或隐藏浮窗
    • 货币切换按钮:在 CNY 与 USD 之间切换

    需要打包成独立 EXE 时:

    python -m pip install pyinstaller
    python -m PyInstaller itgeeker_gold_widget.spec --clean --noconfirm
    

    itgeeker_gold_widget.spec 中将 COLLECTname 设为空字符串,构建产物与所有依赖文件会落在项目根目录(与 spec 文件同级),而非默认的 dist/ 子目录。


    配置说明

    首次运行时,程序会在用户目录下创建配置文件:

    %USERPROFILE%\itgeeker_widget_config\config_gold.json
    

    所有可调参数均可在 设置对话框(右键菜单 → 设置)中修改并即时保存,无需手动编辑 JSON。下表列出了当前实现的全部用户级字段及其默认值:

    字段默认值取值范围 / 说明
    window_x100浮窗左上角 X 坐标(像素)
    window_y100浮窗左上角 Y 坐标(像素)
    window_width320浮窗宽度(像素,最小 210)
    window_height180浮窗高度(像素,最小 135)
    always_on_topfalse是否始终置顶
    bg_color#1a1a2e背景颜色(HEX)
    bg_opacity220背景透明度(30~255)
    font_size14正文字号(8~32 px)
    text_color#ffffff文字颜色(HEX)
    refresh_interval60数据刷新间隔(10~3600 秒)
    currencyCNY价格单位:CNYUSD
    auto_startfalse是否随 Windows 开机自启

    🛠️ 推荐做法:优先使用设置对话框修改配置。手动编辑 JSON 仅在排查问题时使用,并且注意保留合法的 JSON 语法(UTF-8 编码)。


    贡献指南

    欢迎通过 Issue 与 Pull Request 一起把这个小组件做得更好。流程很简单:

    1. Fork 仓库到你的 Gitee 账号下
    2. 基于 main 分支创建一个特性分支,例如 feat/awesome-improvement
    3. 在分支上提交改动,建议保持提交粒度小、描述清晰
    4. 推送到你的 Fork:git push origin feat/awesome-improvement
    5. Gitee 仓库发起 Pull Request,并在说明中写清楚改动动机与验证方式

    开源协议

    本仓库根目录下的 [`LICENSE`](./LICENSE) 文件包含完整的协议文本,采用:

    > **木兰宽松许可证,第 2 版(**Mulan Permissive Software License, Version 2, Mulan PSL v2**)**

    > 2020 年 1 月:http://license.coscl.org.cn/MulanPSL2


    **技术奇客 ITGeeker.net** 用心维护 ·
    若觉得这个小工具对你有帮助,欢迎点亮 Star ⭐

  • Ubuntu/Debian/Raspbian源码编译安装Python3.8 及默认版本选择配置

    Ubuntu/Debian/Raspbian源码编译安装Python3.8 及默认版本选择配置

    Python 2 即将退出历史舞台,赶紧熟悉python 3的安装及配置吧。

    1. 安装编译依赖包

    sudo apt update
    sudo apt-get install -y build-essential tk-dev libncurses5-dev libncursesw5-dev libreadline6-dev libdb5.3-dev libgdbm-dev libsqlite3-dev libssl-dev libbz2-dev libexpat1-dev liblzma-dev zlib1g-dev libffi-dev tar wget vim

    2.下载python3.8源代码

    cd /tmp && wget https://www.python.org/ftp/python/3.8.0/Python-3.8.0.tgz
    tar -zxf Python-3.8.0.tgz
    cd Python-3.8.0

    3.编译及安装python3.8

    ./configure --enable-optimizations
    make -j 4 #如果你的系统有8核,可以使用-j 8
    make altinstall

    不要使用标准make来安装,否则会覆盖系统默认的python版本

    by ITGeeker

    4.python3.8版本确认

    python3.8 --version

    5.设置python3.8版本为默认版本

    python -V #查看当前默认版本
    echo "alias python='/usr/local/bin/python3.8'" >> ~/.bashrc #刚刚编译安装目录
    source ~/.bashrc
    python -V #确认是否已切换成功

    echo “alias python=’/usr/bin/python3.7′” >> ~/.bashrc #切换到python3.7 apt安装版本

    by ITGeeker
  • 升级Python到2.7.15 on CentOS 6 x64

    Centos 6 自带的2.6版本队友有些情况总会出现各种错误,例如:

    File "/usr/lib/python2.6/site-packages/pip/_internal/index.py", line 526 
    {str(c.version) for c in all_candidates}, ^ 
    SyntaxError: invalid syntax

    明确你的Linux版本

    cat /etc/redhat-release

    安装依赖:

    yum groupinstall -y "Development tools"
    yum install -y zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel

    下载最新版本并编译安装

    cd /tmp
    wget https://www.python.org/ftp/python/2.7.15/Python-2.7.15.tgz
    tar zxf Python-2.7.15.tgz
    cd Python-2.7.15
    ./configure
    make && make install

    #新版目录

    ll -tr /usr/local/bin/python*

    #系统自带老版本目录

    ll -tr /usr/bin/python*

    备份老版本命令,创建新版本软连接

    mv /usr/bin/python /usr/bin/python.old
    rm -f /usr/bin/python-config
    ln -s /usr/local/bin/python /usr/bin/python && ln -s /usr/local/bin/python-config /usr/bin/python-config && ln -s /usr/local/include/python2.7/ /usr/include/python2.7
    

    检查一下是否正确

    python --version

    为新版 Python 安装 setuptools

    wget https://bootstrap.pypa.io/ez_setup.py -O - | python
    easy_install pip

    然后就可以pip安装了

    pip install itgeeker
奇客罗方公众号 奇客罗方小程序 奇客罗方客服 ITGeeker Telegram

网站由ITGeeker技术奇客开发并管理;隶属于GeekerCloud奇客罗方智能科技
Site designed and developed by ITGeekerwhich is a sub-website of GeekerCloud
网站地图 | 沪ICP备2021031434号-4