<p align="center">
<img width="18%" align="center" src="https://raw.githubusercontent.com/YaoXuanZhi/ScreenPinKit/main/images/logo.svg" alt="logo">
</p>
<h1 align="center">
ScreenPinKit
</h1>
<p align="center">
一款基于PyQt5的迷你截图标注、桌面标注工具
</p>
<p align="center">
<a href="https://pypi.org/project/ScreenPinKit" target="_blank">
<img src="https://img.shields.io/pypi/v/ScreenPinKit?color=%2334D058&label=Version" alt="Version">
</a>
<a style="text-decoration:none">
<img src="https://static.pepy.tech/personalized-badge/pyqt-fluent-widgets?period=total&units=international_system&left_color=grey&right_color=brightgreen&left_text=Downloads" alt="Download"/>
</a>
<a style="text-decoration:none">
<img src="https://img.shields.io/badge/License-GPLv3-blue?color=#4ec820" alt="GPLv3"/>
</a>
<a style="text-decoration:none">
<img src="https://img.shields.io/badge/Platform-Win32%20-blue?color=#4ec820" alt="Platform Win32"/>
</a>
</p>
<p align="center">
<a href="../README.md">English</a> | 简体中文
</p>
![Interface](https://raw.githubusercontent.com/YaoXuanZhi/ScreenPinKit/main/images/Interface.png)
## 安装
```shell
# 暂时只推荐在Python3.8、Python3.9上安装
pip install ScreenPinKit -i https://pypi.org/simple/
ScreenPinKit
```
> **Warning**
> 该应用使用了第三方库system_hotkey来注册全局快捷键,但是由于该包已经有3年以上不维护了,推荐在python3.8上安装并运行
## 运行示例
使用 pip 安装好 ScreenPinKit 包并下载好此仓库的代码之后,就可以运行 src 目录下的任意示例程序,比如:
```sh
cd src
python main.py
python ./canvas_editor/demos/canvas_editor_demo_full.py
python ./canvas_item/demos/canvas_arrow_demo.py
```
## 打包单文件
```sh
# Windows Defender可能会报毒,忽略即可打包出来
pyinstaller --onefile --icon=../images/logo.png --windowed main.py -n ScreenPinKit
```
## 使用教程
| 作用域 | 快捷键 | 作用 |
|-------|-------|-------|
| 全局 | F7 | 截图 |
| 全局 | F4 | 呼出屏幕标注 |
| 全局 | F2 | 在鼠标位置上显示剪贴板上的图像 |
| 全局 | Esc | 逐步退出该窗口的编辑状态 |
| 截图窗口 | Ctrl+T | 将截图选区转换为屏幕贴图 |
| 截图窗口 | Shift | 切换放大镜上的颜色格式(rgb/hex) |
| 截图窗口 | C | 复制当前拾取到的颜色格式 |
| 贴图窗口 | Alt+F | 切换鼠标穿透状态 |
| 贴图窗口 | Ctrl+C | 复制当前贴图到剪贴板上 |
| 贴图窗口 | Ctrl+S | 将当前贴图保存到磁盘上 |
| 贴图窗口 | Ctrl+W | 完成绘图 |
| 屏幕标注窗口 | Alt+L | 隐藏/显示屏幕标注内容 |
| 屏幕标注窗口 | Ctrl+W | 完成绘图 |
请仔细阅读 [wiki](https://github.com/YaoXuanZhi/ScreenPinKit/wiki)
## 参考
* [**Snipaste**: Snipaste 是一个简单但强大的截图工具,也可以让你将截图贴回到屏幕上](https://zh.snipaste.com/)
* [**excalidraw**: Design guidelines and toolkits for creating native app experiences](https://excalidraw.com/)
* [**PyQt-Fluent-Widgets**: A fluent design widgets library based on C++ Qt/PyQt/PySide. Make Qt Great Again.](https://github.com/zhiyiYo/PyQt-Fluent-Widgets)
* [**ShareX**: Screen capture, file sharing and productivity tool](https://github.com/ShareX/ShareX)
* [**ppInk**: An easy to use on-screen annotation software inspired by Epic Pen.](https://github.com/onyet/ppInk/)
* [**pyqtgraph**: Fast data visualization and GUI tools for scientific / engineering applications](https://github.com/pyqtgraph/pyqtgraph)
* [**Jamscreenshot**: 一个用python实现的类似微信QQ截屏的工具源码,整合提取自本人自制工具集Jamtools](https://github.com/fandesfyf/Jamscreenshot)
* [**EasyCanvas**: 基于Qt QGraphicsView的简易画图软件](https://github.com/douzhongqiang/EasyCanvas)
* [**PixPin**: 功能强大使用简单的截图/贴图工具,帮助你提高效率](https://pixpinapp.com/)
<details>
<summary>TodoList</summary>
- ☐ 修复system_hotkey的异常表现
>经测试,在python3.10下会抛异常,并且在python3.8上其异常也不能被正常捕获,考虑到它已经有将近3年不维护了,需要做对它做全方位的兼容性处理
- ☐ 无感设置快捷键
- ☐ 无感切换语言
- ☐ 插件市场
- ☐ 更快的离线OCR识别支持
- ☐ 完善OCR识别层的UI显示
</details>
Raw data
{
"_id": null,
"home_page": "https://github.com/YaoXuanZhi/ScreenPinKit",
"name": "ScreenPinKit",
"maintainer": null,
"docs_url": null,
"requires_python": null,
"maintainer_email": null,
"keywords": "pyqt ScreenPinKit screenshot screen-paint",
"author": "YaoXuanZhi",
"author_email": "yaoxuanzhi@outlook.com",
"download_url": "https://files.pythonhosted.org/packages/1d/a3/448c35a31202331b3cfa89a7855b658252f1bd475a3dac05535c2ac9a642/screenpinkit-1.1.tar.gz",
"platform": null,
"description": "<p align=\"center\">\r\n <img width=\"18%\" align=\"center\" src=\"https://raw.githubusercontent.com/YaoXuanZhi/ScreenPinKit/main/images/logo.svg\" alt=\"logo\">\r\n</p>\r\n <h1 align=\"center\">\r\n ScreenPinKit\r\n</h1>\r\n<p align=\"center\">\r\n \u4e00\u6b3e\u57fa\u4e8ePyQt5\u7684\u8ff7\u4f60\u622a\u56fe\u6807\u6ce8\u3001\u684c\u9762\u6807\u6ce8\u5de5\u5177\r\n</p>\r\n\r\n<p align=\"center\">\r\n <a href=\"https://pypi.org/project/ScreenPinKit\" target=\"_blank\">\r\n <img src=\"https://img.shields.io/pypi/v/ScreenPinKit?color=%2334D058&label=Version\" alt=\"Version\">\r\n </a>\r\n\r\n <a style=\"text-decoration:none\">\r\n <img src=\"https://static.pepy.tech/personalized-badge/pyqt-fluent-widgets?period=total&units=international_system&left_color=grey&right_color=brightgreen&left_text=Downloads\" alt=\"Download\"/>\r\n </a>\r\n\r\n <a style=\"text-decoration:none\">\r\n <img src=\"https://img.shields.io/badge/License-GPLv3-blue?color=#4ec820\" alt=\"GPLv3\"/>\r\n </a>\r\n\r\n <a style=\"text-decoration:none\">\r\n <img src=\"https://img.shields.io/badge/Platform-Win32%20-blue?color=#4ec820\" alt=\"Platform Win32\"/>\r\n </a>\r\n</p>\r\n\r\n<p align=\"center\">\r\n<a href=\"../README.md\">English</a> | \u7b80\u4f53\u4e2d\u6587\r\n</p>\r\n\r\n![Interface](https://raw.githubusercontent.com/YaoXuanZhi/ScreenPinKit/main/images/Interface.png)\r\n\r\n\r\n## \u5b89\u88c5\r\n```shell\r\n# \u6682\u65f6\u53ea\u63a8\u8350\u5728Python3.8\u3001Python3.9\u4e0a\u5b89\u88c5\r\npip install ScreenPinKit -i https://pypi.org/simple/\r\n\r\nScreenPinKit\r\n```\r\n\r\n> **Warning**\r\n> \u8be5\u5e94\u7528\u4f7f\u7528\u4e86\u7b2c\u4e09\u65b9\u5e93system_hotkey\u6765\u6ce8\u518c\u5168\u5c40\u5feb\u6377\u952e\uff0c\u4f46\u662f\u7531\u4e8e\u8be5\u5305\u5df2\u7ecf\u67093\u5e74\u4ee5\u4e0a\u4e0d\u7ef4\u62a4\u4e86\uff0c\u63a8\u8350\u5728python3.8\u4e0a\u5b89\u88c5\u5e76\u8fd0\u884c\r\n\r\n## \u8fd0\u884c\u793a\u4f8b\r\n\u4f7f\u7528 pip \u5b89\u88c5\u597d ScreenPinKit \u5305\u5e76\u4e0b\u8f7d\u597d\u6b64\u4ed3\u5e93\u7684\u4ee3\u7801\u4e4b\u540e\uff0c\u5c31\u53ef\u4ee5\u8fd0\u884c src \u76ee\u5f55\u4e0b\u7684\u4efb\u610f\u793a\u4f8b\u7a0b\u5e8f\uff0c\u6bd4\u5982\uff1a\r\n\r\n```sh\r\ncd src\r\npython main.py\r\n\r\npython ./canvas_editor/demos/canvas_editor_demo_full.py\r\n\r\npython ./canvas_item/demos/canvas_arrow_demo.py\r\n\r\n```\r\n\r\n## \u6253\u5305\u5355\u6587\u4ef6\r\n```sh\r\n# Windows Defender\u53ef\u80fd\u4f1a\u62a5\u6bd2\uff0c\u5ffd\u7565\u5373\u53ef\u6253\u5305\u51fa\u6765\r\npyinstaller --onefile --icon=../images/logo.png --windowed main.py -n ScreenPinKit\r\n```\r\n\r\n## \u4f7f\u7528\u6559\u7a0b\r\n| \u4f5c\u7528\u57df | \u5feb\u6377\u952e | \u4f5c\u7528 |\r\n|-------|-------|-------|\r\n| \u5168\u5c40 | F7 | \u622a\u56fe |\r\n| \u5168\u5c40 | F4 | \u547c\u51fa\u5c4f\u5e55\u6807\u6ce8 |\r\n| \u5168\u5c40 | F2 | \u5728\u9f20\u6807\u4f4d\u7f6e\u4e0a\u663e\u793a\u526a\u8d34\u677f\u4e0a\u7684\u56fe\u50cf |\r\n| \u5168\u5c40 | Esc | \u9010\u6b65\u9000\u51fa\u8be5\u7a97\u53e3\u7684\u7f16\u8f91\u72b6\u6001 |\r\n| \u622a\u56fe\u7a97\u53e3 | Ctrl+T | \u5c06\u622a\u56fe\u9009\u533a\u8f6c\u6362\u4e3a\u5c4f\u5e55\u8d34\u56fe |\r\n| \u622a\u56fe\u7a97\u53e3 | Shift | \u5207\u6362\u653e\u5927\u955c\u4e0a\u7684\u989c\u8272\u683c\u5f0f(rgb/hex) |\r\n| \u622a\u56fe\u7a97\u53e3 | C | \u590d\u5236\u5f53\u524d\u62fe\u53d6\u5230\u7684\u989c\u8272\u683c\u5f0f |\r\n| \u8d34\u56fe\u7a97\u53e3 | Alt+F | \u5207\u6362\u9f20\u6807\u7a7f\u900f\u72b6\u6001 |\r\n| \u8d34\u56fe\u7a97\u53e3 | Ctrl+C | \u590d\u5236\u5f53\u524d\u8d34\u56fe\u5230\u526a\u8d34\u677f\u4e0a |\r\n| \u8d34\u56fe\u7a97\u53e3 | Ctrl+S | \u5c06\u5f53\u524d\u8d34\u56fe\u4fdd\u5b58\u5230\u78c1\u76d8\u4e0a |\r\n| \u8d34\u56fe\u7a97\u53e3 | Ctrl+W | \u5b8c\u6210\u7ed8\u56fe |\r\n| \u5c4f\u5e55\u6807\u6ce8\u7a97\u53e3 | Alt+L | \u9690\u85cf/\u663e\u793a\u5c4f\u5e55\u6807\u6ce8\u5185\u5bb9 |\r\n| \u5c4f\u5e55\u6807\u6ce8\u7a97\u53e3 | Ctrl+W | \u5b8c\u6210\u7ed8\u56fe |\r\n\r\n\u8bf7\u4ed4\u7ec6\u9605\u8bfb [wiki](https://github.com/YaoXuanZhi/ScreenPinKit/wiki)\r\n\r\n## \u53c2\u8003\r\n* [**Snipaste**: Snipaste \u662f\u4e00\u4e2a\u7b80\u5355\u4f46\u5f3a\u5927\u7684\u622a\u56fe\u5de5\u5177\uff0c\u4e5f\u53ef\u4ee5\u8ba9\u4f60\u5c06\u622a\u56fe\u8d34\u56de\u5230\u5c4f\u5e55\u4e0a](https://zh.snipaste.com/)\r\n* [**excalidraw**: Design guidelines and toolkits for creating native app experiences](https://excalidraw.com/)\r\n* [**PyQt-Fluent-Widgets**: A fluent design widgets library based on C++ Qt/PyQt/PySide. Make Qt Great Again.](https://github.com/zhiyiYo/PyQt-Fluent-Widgets)\r\n* [**ShareX**: Screen capture, file sharing and productivity tool](https://github.com/ShareX/ShareX)\r\n* [**ppInk**: An easy to use on-screen annotation software inspired by Epic Pen.](https://github.com/onyet/ppInk/)\r\n* [**pyqtgraph**: Fast data visualization and GUI tools for scientific / engineering applications](https://github.com/pyqtgraph/pyqtgraph)\r\n* [**Jamscreenshot**: \u4e00\u4e2a\u7528python\u5b9e\u73b0\u7684\u7c7b\u4f3c\u5fae\u4fe1QQ\u622a\u5c4f\u7684\u5de5\u5177\u6e90\u7801\uff0c\u6574\u5408\u63d0\u53d6\u81ea\u672c\u4eba\u81ea\u5236\u5de5\u5177\u96c6Jamtools](https://github.com/fandesfyf/Jamscreenshot)\r\n* [**EasyCanvas**: \u57fa\u4e8eQt QGraphicsView\u7684\u7b80\u6613\u753b\u56fe\u8f6f\u4ef6](https://github.com/douzhongqiang/EasyCanvas)\r\n* [**PixPin**: \u529f\u80fd\u5f3a\u5927\u4f7f\u7528\u7b80\u5355\u7684\u622a\u56fe/\u8d34\u56fe\u5de5\u5177\uff0c\u5e2e\u52a9\u4f60\u63d0\u9ad8\u6548\u7387](https://pixpinapp.com/)\r\n\r\n<details>\r\n<summary>TodoList</summary>\r\n\r\n - \u2610 \u4fee\u590dsystem_hotkey\u7684\u5f02\u5e38\u8868\u73b0\r\n >\u7ecf\u6d4b\u8bd5\uff0c\u5728python3.10\u4e0b\u4f1a\u629b\u5f02\u5e38\uff0c\u5e76\u4e14\u5728python3.8\u4e0a\u5176\u5f02\u5e38\u4e5f\u4e0d\u80fd\u88ab\u6b63\u5e38\u6355\u83b7\uff0c\u8003\u8651\u5230\u5b83\u5df2\u7ecf\u6709\u5c06\u8fd13\u5e74\u4e0d\u7ef4\u62a4\u4e86\uff0c\u9700\u8981\u505a\u5bf9\u5b83\u505a\u5168\u65b9\u4f4d\u7684\u517c\u5bb9\u6027\u5904\u7406\r\n - \u2610 \u65e0\u611f\u8bbe\u7f6e\u5feb\u6377\u952e\r\n - \u2610 \u65e0\u611f\u5207\u6362\u8bed\u8a00\r\n - \u2610 \u63d2\u4ef6\u5e02\u573a\r\n - \u2610 \u66f4\u5feb\u7684\u79bb\u7ebfOCR\u8bc6\u522b\u652f\u6301\r\n - \u2610 \u5b8c\u5584OCR\u8bc6\u522b\u5c42\u7684UI\u663e\u793a\r\n\r\n</details>\r\n",
"bugtrack_url": null,
"license": "GPLv3",
"summary": "A mini screenshot and annotation tool that incorporates ideas from Snipaste, Excalidraw, ShareX, and others.",
"version": "1.1",
"project_urls": {
"Bug Tracker": "https://github.com/YaoXuanZhi/ScreenPinKit/issues",
"Documentation": "https://github.com/YaoXuanZhi/ScreenPinKit/wiki",
"Homepage": "https://github.com/YaoXuanZhi/ScreenPinKit",
"Source Code": "https://github.com/YaoXuanZhi/ScreenPinKit"
},
"split_keywords": [
"pyqt",
"screenpinkit",
"screenshot",
"screen-paint"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "379009d5dce78955614681a6fb1feb6361b2e38050bbc8ae2683ca17b7ae5988",
"md5": "6beec3a211ff1b81e7bf9d4f40c8f26e",
"sha256": "47ecaec5e8670216732c2fefa39e1a90ecbfedcb51a3dcda7358afba7653406b"
},
"downloads": -1,
"filename": "ScreenPinKit-1.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "6beec3a211ff1b81e7bf9d4f40c8f26e",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 183661,
"upload_time": "2024-06-27T13:28:38",
"upload_time_iso_8601": "2024-06-27T13:28:38.394827Z",
"url": "https://files.pythonhosted.org/packages/37/90/09d5dce78955614681a6fb1feb6361b2e38050bbc8ae2683ca17b7ae5988/ScreenPinKit-1.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "1da3448c35a31202331b3cfa89a7855b658252f1bd475a3dac05535c2ac9a642",
"md5": "993bfd918eacf102f08f8edb6fe2391b",
"sha256": "5dc8202a3aaf38a79e065befb8fd028ca9d111a5e9a4af6ee82f47c931a15e27"
},
"downloads": -1,
"filename": "screenpinkit-1.1.tar.gz",
"has_sig": false,
"md5_digest": "993bfd918eacf102f08f8edb6fe2391b",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 142843,
"upload_time": "2024-06-27T13:28:39",
"upload_time_iso_8601": "2024-06-27T13:28:39.771660Z",
"url": "https://files.pythonhosted.org/packages/1d/a3/448c35a31202331b3cfa89a7855b658252f1bd475a3dac05535c2ac9a642/screenpinkit-1.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-06-27 13:28:39",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "YaoXuanZhi",
"github_project": "ScreenPinKit",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"requirements": [],
"lcname": "screenpinkit"
}