自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(114)
  • 收藏
  • 关注

原创 Python GUI 框架个人体验及评价 (2022)

说明事项为不挤占文章排版空间, 我将说明事项放在了文末. 点此跳转.目录本文内容量巨大. 请善用博客左侧的目录导航快速跳转你想看的章节.💠 Python GUI💡 声明式 UI 框架🔥 QML (PySide6/PySide2/PyQt6/PyQt5) (★★★★★)关键词: qt; 反应式编程; 高级动效; 声明式 ui; 现代化应用截图: 点击跳转本文附录.宽高, 以及隐式宽高的处理qml 的 width, height 和 implicitWidth, implicitHeig

2022-05-06 01:01:07 3790

原创 (自创) 一种新的轻量级文本标记语言 - MarkOwl

设计目标语法优雅标记简洁 & 易于书写语法健全. 不能出现自相矛盾, 漏洞百出, 解释不清的地方标记含义明确, 不要有歧义标记不可以对正文文字造成视觉干扰 (不能让阅读者看着眼花缭乱, 分不清主次, 感到不适或困惑等)标记规则的设计有完整的内在逻辑. 不能让各种标记百花齐放, 毫无规律可循标记是宽容的. 错误的标记不会造成文本渲染的灾难可扩展, 可编程. 最好支持脚本语言 (python/javascript) 的控制可配置: 全局配置, 项目配置, 单文件配置 (front m

2022-04-30 11:55:51 1398

原创 概念区分: sys.platform, os.name, os.uname, platform 应该用哪个?

模块是与解释器相关的, 跟系统是不是 64 位没有关系. 这里的 “win32” 应该指的是 win32 API, python 的解释器 (无论是 32 位版本还是 64 位版本) 都是基于 win32 API 构建的.ps: 官方文档中列出的 platform 方法不是很多, 描述也比较简洁, 有兴趣可以读一下. 下面的内容是从中抽取了本人感兴趣的部分做了示例讲解.是的. 如果你的目标是为了匹配常见的操作系统, 那么足够使用了.如果你用的是 IronPython 解释器, 返回的是。

2023-07-18 12:00:18 476

原创 关于 Jupyter Console 没有自动提示 (补全) 的修复

都会启动命令行界面, 但二者在体验上存在一些不同之处, 其中最显著的就是前者没有自动补全, 而后者有, 因此使用体验受到影响. 好在本文就是为了解决这个问题的.是一个 python 库, 用来给命令行 REPL 提供上下文感知, 自动补全, 历史记录等功能. 它是 ipython 和 jupyter 的重要依赖之一.提供这个参数, 就应该能够使用自动补全功能, 但本人测试最新版 (截至 2023-07-01) 并没有作用, 个人怀疑是 jupyter 的一个 bug.此外, 根据官方文档描述, 启动。

2023-07-01 02:36:38 1121

原创 将 YAPF 设置为默认的 Python 代码格式化工具 (VS Code, PyCharm)

yapf 是一个 python 代码格式化工具, 和 black, autopep8, pycharm 自带的格式化功能相同用途.

2023-06-29 12:58:41 999

原创 安装独立版 Python

独立版的 python 可以让你在同一台电脑上存在多个版本的 python, 同时具有以下优点:请根据你的电脑系统下载对应的安装包:解压刚才你下载的压缩包. 解压后得到一个 “python” 文件夹.将这个文件夹放到你喜欢的位置, 比如我的是 (windows) 和 (macos).将以下路径加入到 PATH 环境变量windows 示例 (编辑系统环境变量):macos 示例 (添加到 ):测试新开一个命令行, 输入以下命令测试:优化与增强如果你在用 macos / linux, 以下配

2022-12-06 12:05:45 969 1

原创 Lottie 动画导出为 GIF/MP4 以及与 QML 集成演示

lottiefiles 是一个很好的网站, 从上面可以下载到别人分享的 lottie 动画文件.我们可以下载到多种格式, 下面分别讲解每个格式的下载和适用情景.这是体积最小的格式, 一般在 10kb ~ 100kb 之间. 考虑到 lottiefiles 的服务器在国外, 下载这种格式是最快的.下载完成后, 我们可以用本地工具将它转换成图像或视频文件. 见下面的 “文件格式转换” 部分.lottiefiles 有一个特别强大的功能, 支持编辑 lottie 动画的颜色. 你可以在修改成自己喜欢的颜色后下载成

2022-12-04 23:52:00 2629 1

原创 BAT 脚本转 EXE 工具

最近要为打包的程序做一个启动器图标, 之前是用 .bat 脚本来启动程序的, 所以想到了 bat 转 exe 的工具.下载地址: https://github.com/tokyoneon/B2E我找到的工具同时支持可视化界面和命令行两种调用方式.

2022-11-23 22:18:01 3012

原创 Python 函数转命令行界面库 -- Argsense CLI

argsense 是一个 python 命令行界面库, 是 click, fire, typer 之外的又一个选项.argsense 最大的特点是极低的侵入性设计和近乎零成本的上手难度, 如果你熟悉 python 函数是如何传参的 (这是大部分 python 初学者已经掌握的知识), 那么你就可以很快上手 argsense.

2022-11-21 00:11:15 288

原创 Python 增量更新/打包解决方案 -- Depsland

depsland 是针对轻量化的应用分发方案打造的基础服务框架, 用于帮助开发者快速分发 python 应用程序, 并为用户提供简单友好的程序安装, 升级和管理服务.depsland 是一个开源项目 (项目地址), 它诞生于 pyportable-installer (项目地址), 现已作为独立的工具供 python 开发者下载和使用.

2022-11-13 15:09:27 1657

原创 Python 标准库 zipfile 压缩文件/文件夹

压缩单个目录时, ZipFile 需要 write 目录, 以及目录下每一个文件 (包括子文件夹的文件) 的路径.

2022-09-05 18:19:21 4668

原创 Python urllib, urllib2, urllib3 以及 requests 的区别 (附个人一些看法)

如果是一些基础的, 偶尔使用到 (在自己的项目的少数模块中), 其实推荐用 python 自带的 urllib;requests 适合专注于爬虫等网络通讯项目的人员.

2022-09-05 15:02:50 1613

原创 从指定路径加载 Python 模块

我个人觉得此方案非常优秀. 它有效解决了同名但不同目录的包的导入, 导入空间可能被污染的隐患, 以及导入效率等问题.直接在 sys.path 中添加该 zip 文件的路径即可, 可以是绝对路径, 也可以相对路径.使用方法非常直观易懂. 而且不会带来类似 sys.path 的方法中那种导入空间被污染的隐患.注意不同系统打印的结果存在一些差异. 使用 IDE 启动, 也会和命令行启动存在一些差异.该优先级决定了, 如果不同目录下有同名的子文件夹, 那么靠前的目录下的才会被成功导入.

2022-09-02 12:09:59 2345

原创 Python WebApp 全栈开发 (技术方案备忘)

技术方案:💎 flask + dominate/domonic + brython + pico css近期的亮点:brython 发布了 3.10.6 版本 (于 2022 年 6 月!):很高兴看到 brython 仍处于活跃的状态.🚫 flask + dominate/domonic + pyscript + pico css不采用理由:flask: 服务器, 路由, 静态资源系统dominate / domonic: 使用 python 语法快速生成 (静态) html算是手写 html 或者 ..

2022-06-30 17:45:07 573

原创 从 flask 服务端代码自动生成客户端代码 -- flask-native-stubs 库介绍

flask-native-stubs 项目灵感来源 swagger 的 codegen 工具. 用来从服务端的路由函数自动生成对应的客户端接口函数.你将会体验到如同 “本地函数调用” 般的快捷和自然. 如同下面这样:服务端代码:客户端代码:使用 flask_native_stubs 自动生成的代码 (上面代码块中引用的 “server_stubs.py”) 看起来长什么样:运行截图:“stub” 引用自 java j2ee 的 stub 概念:在 python 中, 也有 stub 的

2022-06-13 00:19:52 355

原创 Windows Terminal 美化 / PowerShell 美化: oh-my-posh 主题安装和使用

关键词: nerd-font; oh-my-posh; posh; powerline-font; powershell; scoop; winget最终效果预览说明事项本文与网络上多数介绍 oh-my-posh 的文章的不同之处:其他博客提到的安装命令已过时, 会被引导到 “官方迁移页面” (如下图). 本文是根据 oh-my-posh 官网给出的最新安装方式来安装. (截至 2022 年 5 月)对所有命令都添加了注释, 帮助大家来理解.增加了主题, 字体的安装和说明事项..

2022-05-24 17:13:31 8702 1

原创 Python 语言在实际使用中遇到的一些缺点和不足

综合影响范围和影响程度降序排列.略.python 的模块的相对路径不是相对于自身文件路径, 而是相对于 . 它给不规范的依赖库带来了风险.例如, 依赖库 A 在其内部使用 os.chdir 改变了工作目录, 并使其内部的相对路径正常工作; 但是, 由于某种原因, A 未将其还原到默认的工作目录 (比如非预期的报错, 或者设计漏洞等), 就导致我们的代码中之后使用相对路径的地方全部受到了破坏! 而且该错误比较隐晦, 找到错误根源非常困难.主要表现为:示例:例如 KeyError, IndexError, As

2022-05-20 17:56:46 1432

原创 Markdown 本地图片与多图床管理

背景: 本地图片与图床的取舍我在使用 markdown 写作的早期, 喜欢将所有图片上传到图床管理. 当时也有各种各样的图片上传和图床管理工具, 更重要的是有免费的图床可供选择.但一段时间后, 特别是经历了七牛云收费 (这个不算是服务商的错, 是因为我懒没有做迁移), 图床闭站等事件, 导致我的不少旧文章的图片全部失效, 也找不到备份方案. 直到现在也没有办法恢复它们. 这让我开始怀疑全部依赖图床的可靠性问题.另外也有诸多其他原因, 让我最终决定回到了本地图片优先的方案上:部分网站有防盗链设计,

2022-05-05 22:32:19 978

原创 在 Windows 上使用 bpython

解决思路提示: 如需看 "解决流程", 请直接跳到下一个章节.windows 用户直接运行 bpython, 会遇到很多 "ModuleNotFound" 错误.根据官方的 解决方法, 我们需要手动下载 curses 库 (一个 whl 文件), 然后在终端使用 bpython-curses 启动.考虑到官方的这个建议已经比较老了, (大概在 7 年前提出的?) 现在我们要解决 curses 的问题其实有更好的方法: 通过 pip install windows-curses 一步到位.

2022-05-02 18:01:09 1673

原创 下一个 Brython? 不, 是 Python in WebAseembly

pyscript (官网) 支持在 html 中使用纯 python 语法的脚本标签. 形如下面的示例:<html> <py-script> print("now you can run python in your html!") </py-script></html>部分了解过 brython 的人可能对此感到熟悉, 但二者也有显著的不同:brython 是将 python 代码转换成 “等价” 的 javasc

2022-05-01 10:29:48 664

原创 Python 日志打印库 lk-logger: 打印源码位置和变量名

项目地址: https://github.com/likianta/lk-loggerlk-logger 是一个简单易用的日志打印工具, 可作为 print 的替代品.lk-logger 的用法非常简单, 在顶部加入两行代码:import lk_loggerlk_logger.setup()之后, 你的原项目中所有使用到 print(...) 的地方, 打印效果都会发生变化…lk-logger 相比于 print 的优点:显示调用者在源码的文件位置和行号.在 pycharm 控.

2022-04-23 02:01:53 1599 1

原创 Windows 通过 BAT 脚本创建相对路径的快捷方式

网上没有找到相关的结果. 这是我综合多个答案的线索找到的一个简单有效的方案.本文解决以下问题:bat 怎么创建快捷方式快捷方式需要带上图标快捷方式怎么用相对路径 (这样可以把快捷方式的启动器放入自己的应用, 打包发给别人也能使用)注: 该教程的目的是帮助开发者快速封装自己的 bat 启动器为 lnk 格式, 并添加自己的启动器图标, 提升应用美观性.快速开始直接拷贝下个章节提供的源代码, 保存为 “create_relative_shortcut.bat” 文件. 通过 cmd 调用:#

2021-12-20 22:40:30 3973 1

原创 Windows 创建相对路径的快捷方式

假设我们有一个文件 a.cmd, 并通过常规的方法创建了它的快捷方式 a.lnk. 这两个文件现在放在同一个目录. 我们希望把 lnk 文件改为以相对路径的方式打开 a.cmd.请这样做:右键 lnk 文件, 打开它的属性将 “Start in” 的值改为 %CD%, 表示 “从当前目录 (CurrentDirectory) 开始”将 “Target” 的值改为 %windir%\system32\cmd.exe /c "a.cmd", 其中 %windir% 是 windows 内置的

2021-12-20 18:40:26 6185 1

原创 Windows 和 Linux 上查找 Python 默认安装路径的几种方法

Windows查看当前在 cmd 中使用的 python 版本的路径# 查看当前在 cmd 中使用的 python 版本的路径python -c "import sys; print(sys.executable)" # 由于我用的是 python 3.10, 所以打印信息如下: # E:\programs\python\Python310\python.exe# 此外, 直接去环境变量 PATH 中也可以查看默认使用的 python # 注意: 如果 PATH 中写入了多个 py

2021-12-19 11:59:15 6176

原创 Python 编程规范之代码 (注释) 的引用 (个人向)

设计目标稳定: 用户根据预设的语法规则应该创建出一条 符合预期的 引用易用: 此引用语法应该便于书写和理解明确: 当我使用该引用语法时, 不会产生歧义普适性: 可以对任意内容, 任意对象进行引用. 它可以是一个函数, 一句代码, 一条注释, 一个非代码文件的指定 part, 一个网页链接等 (查看 此示例)非侵入式: 对于引用对象来说, 设置锚点不是必须的示例:侵入式是在被引对象上进行标记, 即被引对象需要被修改:请跳转查阅 [表格的第二行内容](#20210403003

2021-04-03 01:51:13 994 1

原创 介绍一款 pyinstaller 的替代品

背景之前在打包自动化工具的时候, 我用过 pyinstaller 和 py2exe, 主要遇到了以下这些问题:依赖导致的体积过大 (我用到了 numpy, opencv-python, pyside2 等第三方库)依赖缺失 (可能跟我没有配置好 hidden-import 参数有关, 一些第三方包隐式调用了其他包, 修复这个问题仍然让人头疼)路径错位, 导致我自己的模块找不到包的位置, 以及相对路径也容易出错如何在打包中加入非代码类的资源文件有一个比较典型的场景是, 我的程序会

2021-03-07 15:08:25 5475 3

原创 QML 日志打印和报错信息在 Pycharm 控制台显示

方案 1: 启用 “Emulate terminal in output console”这是一个常用的方法, 点击 Pycharm 右上方的运行下拉框 – “Edit Configurations…” – 勾选 “Emulate terminal in output console”:缺点:Pycharm 控制台会失去一些特性. 比如原先可以显示蓝色下划线的链接, 但是启用这个后就变成普通文本; 原先控制台可以打印彩色文字和背景, 启用这个后就不行了 (如下图所示)QML console.l

2021-01-04 23:26:23 2115

原创 QML 圆角矩形 radius clip 对子组件无效的问题解决方法

本文实现前后效果对比: 正文根据官方的描述, 考虑到性能表现, 父组件的 radius, clip 对子组件是无效的, 也就是说如果外部矩形设置圆角矩形, 对内部矩形的裁剪是无效的, 如下图所示:下面介绍一种最简单的方案, 使用 layer 属性来实现圆角区域的裁剪.import QtQuick 2.0import QtGraphicalEffects 1.0 // 导入这个模块Rectangle { id: _rect width: 100 height: 1

2020-12-05 17:23:36 1498 5

原创 Python 类属性, 实例属性, 类的单例化行为解惑

区分清 “类属性” 和 “实例属性” 的概念: 直接定义在类下面的是类属性, 定义在 __init__ 中的 self.xxx 是实例属性.当类属性是可变类型的对象时, 你才会看到它的多个实例化对象的类属性之间在相互 “干扰” (因为可变类型本质是一个引用, 你修改了这个引用, 别的实例也在持有这个引用, 也就看到引用的内容变了). 而相比之下, 实例属性则是每个实例各自持有的, 不会产生干扰.

2020-11-24 01:03:43 348

原创 Python 编码风格外谈

注:本文仅讨论 PEP8 规范未明确的细节, 并提供个人风格参考风格来自 Google Python Style Guide, 并根据个人喜好做了细微调整 (这些调整的目的是为了进一步提升视觉美感)文章目录格式说明推荐程度箭头 `^` 标记说明与提示风格详解块注释行注释更多变量命名习惯对称好于不对称语义明确好于语义简洁格式一致好于格式不一致使用 i-, o- (或者 r-, w-) 前缀表示 "输入", "输出"目录路径末尾不加斜杠附录风格选型: 为什么 docstring 采用了基于 Googl

2020-11-22 15:42:19 204

原创 xlsxwriter 单元格样式讲解

如何设置单元格样式示例如下:import xlsxwriterbook = xlsxwriter.Workbook( filename='./test.xlsx', options={ # 全局设置 'strings_to_numbers': True, # str 类型数字转换为 int 数字 'strings_to_urls': False, # 自动识别超链接 'constant_memory': False, # 连续内

2020-08-09 23:40:51 9126 1

原创 初次使用 python poetry 包管理模块踩坑

注: 本文不讨论常规的 poetry 使用方法, 只讨论国内开发者在使用 poetry 时可能遇到的一系列问题, 并提供本人踩坑后的解决方法.poetry new, poetry init 在哪个目录下生成?结论: poetry new 在未创建项目时使用, poetry init 在已有项目中使用.poetry newpoetry new 在未创建项目时使用, poetry 将引导你完成项目创建.假设我们在 D:\workspace\plaground 创建了一个名叫 “poetry-demo”

2020-08-09 10:51:59 10195 1

原创 利用 poetry 打包 python 模块发布到 pypi

前述不少人应该对 Python 打包心存阴影, 不同于 Go 与 Rust 在项目打包时的快感, Python 的打包系统和依赖管理比较复杂, setup.py, requirements.txt, setup.cfg, MANIFEST.in, Pipfile and Pipfile.lock (pipenv) 等诸多文件需要我们考虑 (https://learnku.com/python/t/38708).那么有没有 all-in-one 的项目打包工具呢? 这里我使用 poetry 满足了这个需求

2020-08-09 01:25:26 2346

原创 PyQt (PySide) 使用 QML 仿制一个密码框动画

动画效果来源地址: https://uimovement.com/media/resource_image/image_5213.gif.mp4下图是我仿制的动画:实现思路动画的实现锁图标由白色变成了黑色. 锁的图标我们可以通过 Image 对象加载. 白色变黑色则通过附加在 Image 上的 ColorOverlay 实现.密码由星号变成明文. 为了让变化自然, 我们对星号渐隐...

2020-05-05 14:25:01 1285 3

原创 关于 QML 动画的 transitions 属性使用的注意事项

transitions 需要搭配 states 属性使用, 因为在 states 的状态发生改变时, transitions 才会触发.测试图:测试代码:// === view.qml ===import QtQuick 2.14Rectangle { // 令一个矩形在被点击时, 颜色从白色变为黑色. id: _rect width: 500; height...

2020-05-01 18:03:27 719

原创 PyQt (PySide) 各种查找 QML 子对象 (children) 方法大全

对 Grid 对象获取 children"""e.g. qml snippet:Grid { objectName: "my_grid" Button { text: "Button 1" } Button { text: "Button 2" } Button { text: "Button 3" }}"""# engine = QQmlApplica...

2020-04-30 15:58:51 1970

原创 Python 与 JavaScript: 实现同一功能的代码量对比

注 1: 本人使用 Python 的时间较长, 对 JavaScript 的实现可能不够优雅, 如有不当之处还请指正, 谢谢!注 2: 文章本身只展示两种语言在表达同一功能时的简洁力度, 不涉及复杂的功能需求的实现. 内容有个人偏向, 阅读需谨慎.时间转换将秒数转换为时分秒显示, 例如 150 -> “02:30:00”Python 实现:def main(sec: int): ...

2020-04-29 22:19:47 491

原创 PyQt (PySide) 与 QML 的信号连接及注意事项

QML 调用 Python 函数// === view.qml ===import QtQuick 2.14import QtQuick.Controls 2.14import QtQuick.Window 2.12Window { width: 600; height: 400 visible: true Button { text: "he...

2020-04-29 17:13:04 2214 1

原创 PyQt (PySide) 与 QML 互操作 - PyQt, QML ListView, model, QAbstractListModel

需求描述我们需要通过 Python 操作 QML 对象, 使 QML 的 ListView 对象动态地加载元素.实现初始化假设目录结构为:demo|- main.py|- MyItem.qml # 用于 view.qml 的列表元素. 注意文件名首字母必须大写, 否则 QML 导入机制不能引用.|- view.qml最初的代码长这样:// === view.qml ===...

2020-04-28 18:05:43 3266

原创 Chrome 添加自定义搜索引擎

在 Chrome 浏览器地址栏输入: chrome://settings/searchEngines 进入管理搜索引擎点击其他搜索引擎右上角的 “添加” 按钮在输入界面自定义你的引擎, 比如我这里添加了 PIP 的清华镜像点, 以便于搜索我想要的第三方库该搜索引擎是通过关键字触发的, 比如我用的 “-pip” 关键字在地址栏输入 “-pip”, 按 tab 键即可触发...

2020-01-03 14:51:15 3123 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除