ScreenPinKit


NameScreenPinKit JSON
Version 1.1 PyPI version JSON
download
home_pagehttps://github.com/YaoXuanZhi/ScreenPinKit
SummaryA mini screenshot and annotation tool that incorporates ideas from Snipaste, Excalidraw, ShareX, and others.
upload_time2024-06-27 13:28:39
maintainerNone
docs_urlNone
authorYaoXuanZhi
requires_pythonNone
licenseGPLv3
keywords pyqt screenpinkit screenshot screen-paint
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            <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"
}
        
Elapsed time: 4.93665s