Hexo博客发布助手正式完工

本文是使用HexoPubAssistant生成并发布的

最近学了PyQt5,想着做个比较实用的软件,就选择写了个Hexo博客发布助手,不用每次都hexo new,然后找到生成的文档手动用Typora打开,编辑完成后又要打开cmder执行生成、预览和部署的命令,非常麻烦,平时真的懒得写任何文章,所以用PyQt写了这个玩意应该还是对我自己非常有利的。

杂谈

这次的开发工作,在技术上主要遇到的问题是如何处理hexo的交互和pyqtSignal的emit问题。首先hexo的预览是最麻烦的,使用os.system()来执行的话会阻塞,导致无法靠程序自身的逻辑结束预览,因此为了解决这个问题,我选择了subprocess.Popen()来执行命令,因为命令执行完毕之后会即刻返回不会阻塞,但是现在还有个问题是如何模拟用户输入CTRL-C,我暂时没找到合适的方案,选择直接用psutil扫描node.exe的进程然后用os.kill()配合signal.SIGINT来杀进程。一开始我是偷懒,直接把所有node.exe的进程全kill了,但是考虑用户体验还是做了个筛选,只kill用户开始预览和结束预览期间新增的node.exe进程。

然后是pyqtSignal,pyqtSignal必须在使用前声明并设置数据类型,数据类型仅支持python内置的基本类型,比如:

1
previewing = QtCore.pyqtSignal(str)

如果你想emit一个dict,那就需要用json.dumps()为str再emit,否则会报错。这里有篇文章可供参考

然后是打包为安装程序,不得不说Inno Setup是真的强,不过要注意的是那些用于在安装期间展示给用户的文件,最好选择rtf格式,不然显示非英文会乱码。然后安装程序的语言包,可以访问这里,把repo下载下载,然后把你想要的语言支持复制到你的Inno Setup安装目录里(如:C:\Program Files (x86)\Inno Setup 5\Languages)即可使用。

而这次这个软件的美术风格,布局上没有过多设计(我也不会高端的设计),配色选了Typora的某款主题的颜色,然后字体使用了源云明体。毕竟最近听传闻字体乱用会出事,轻则花钱重则官司,虽然我写的是开源软件(用MIT license),但是还是注意下字体的问题,一开始选择的是思源字体系列,但是在PyQt中渲染得很奇怪,有些字还不能对齐,然后搜免费字体就找到了源云明体系列的,感觉有点意思就选择了它。

最近都不想再写任何项目了…

Powered by Hexo and Hexo-theme-hiker

Copyright © 2017 - 2020 HOCHIKONG's WAPORIZer All Rights Reserved.

访客数 : | 访问量 :