最终效果:
![](https://img.haomeiwen.com/i106452/aa0569046dc4bc97.gif)
点击颜色,即可复制颜色代码,然后在需要的地方直接 control + v 粘贴。
1. 首先获取需要的颜色
我展示的颜色源自 Google Material Colors (得翻墙咯)
链接: https://material.io/design/color/the-color-system.html#tools-for-picking-colors
颜色很多,咋办呢,一个个复制?No!毕竟我那么懒。
所以获取网页源码,然后用xPath取出来就好辣。
![](https://img.haomeiwen.com/i106452/16087bd94eac2ef5.jpg)
html 是lxml中的。
from lxml import html
之后,把颜色写入文件备用,取色过程就结束了。
2. 将颜色绘制出来
这就涉及到Python GUI的知识了,这里我使用的是 tkinter
form tkinter import *
首先配置一下主窗口和画布
![](https://img.haomeiwen.com/i106452/135d2b2670b2bd82.jpg)
关于 Tk()
Toplevel widget of Tk which represents mostly the main window of an application.
It has an associated Tcl interpreter.
大意就是:窗口。 :)
另外要显示出来,需要加上
root.mainloop()
... 画布尺寸写死了,每一格的大小也写死了 ...
画格子:
![](https://img.haomeiwen.com/i106452/11af18d972c0c571.jpg)
各种乘法是计算格子的位置。
create_rectangle 方法中有两个参数 fill=color 和 tag=color
color 是当前的颜色
fill=color 表示用此颜色填充方格
tag=color 设置一个Tag,值就是颜色代码。目的是为了传递颜色代码,供点击时使用。
tag_bind() 这个方法是用来实现点击事件,selectColor 就是点击时调用的方法。
![](https://img.haomeiwen.com/i106452/6fb27d14957d56f5.jpg)
root.clipboard_clear() 清空剪贴板(Tk的)
root.clipboard_append(cell_color) 将颜色代码加入剪贴板
到此,功能便完成了,挺简单也挺实用的小工具,方便自己选颜色。
3. 将Python脚本转换为可执行的.app文件 (Mac)
使用 py2app 将Python脚本转为 .app应用
脚本名为:ColorGrid.py ,打开Terminal
1)安装py2app
pip install py2app
2)创建 setup.py 文件
py2applet --make-setup ColorGrid.py
在setup.py中,OPTIONS = {} 中填入 'argv_emulation': True
如果有使用其他的数据文件,要在 DATA_FILES = [] 中填入。
本例中使用了一个文件(color_list.txt)来读写颜色。所以如图:
![](https://img.haomeiwen.com/i106452/b7eb2c544241dd9b.jpg)
3)测一测
python3 setup.py py2app -A
-A 表示 alias mode,简单的理解就是测试,这个并没有生成一个独立的可运行文件,而是依赖了本机的环境。
此命令后会生成 build/ ,dist/ 两个文件夹。
运行一下:
open ./dist/ColorGrid.app/Contents/MacOS/ColorGrid
或者
open -a dist/ColorGrid.app
看看运行是否成功,不成功的话,可以
open -a Console
开打Console,看看错误信息。 (虽然我是看不大懂 :(
4)正式打包
其实就是不加 -A。 :)
python3 setup.py py2app
记得要先删除 build/ 和 dist/
rm -rf build dist
然后在生成的 dist/ 文件夹下,双击 ColorGrid.app 即可运行。
这已经是一个独立的应用,所以可以把它发给你的朋友们使用了。
小插曲:
在使用 py2app 转换Python脚本的时候,生成的 .app 一直运行不起来。
最后找到这个回答
Link:https://stackoverflow.com/questions/45493029/valueerror-character-u6573552f-py2aap
说是 py2app 0.14 的问题,换成 0.13 就好了。
而此时(2018/9/17)最新版本为 0.17 ,于是我从0.17往下尝试一直到 0.13 ,才成功。 :(
I don't know why ? ??
# 指定安装版本 pip install py2app==0.13
网友评论