众所周知,python是个好东西,可以帮你制作折线图啊、饼图啊什么的,还能写爬虫、Web开发、图像处理,甚至能控制你的Office。那你肯定有想过用turtle库画画,而这次,我要整一个大的。
先说一下思路:首先贺卡上得有祝福语吧,即使是词语也行。我们就可以使用这些祝福句子、祝福词语制作一个词云图,用turtle打开词云图后,在上面画一个爱心,然后在爱心里写上你要说的话。
第一步就是搜集一些祝福的句子、词语,这个我可帮不了你,所以自己在网上搜,然后用一个记事本把它们记录下来,保存的时候检查一下后缀必须是txt,编码是UTF-8。
注意看图片下方的信息,千万别搞错咯~
(注意:建议内容要和py项目的源代码在一起,名字要起好,如:word.txt,words.txt等)
第一步的搜集任务就完成了,接下来就要新建一个python文件了。我不知道你们用的是什么软件,但是我个人认为Pycharm这个软件好用一些。建好了以后,我们先导入三个库
from PIL import Image
import wordcloud
import jieba
如果你的电脑里并没有这些库,那么就install吧
安装还是得强调一下:PIL并不是一个库,是一个库名称的简写,在安装时建议写全(pillow)安装的指令是:pip install pillow -i https://pypi.tuna.tsinghua.edu.cn/simple
https://pypi.tuna.tsinghua.edu.cn/simples 是一个速度较快的镜像(如果我没有记错的话那这个网址应该是清华的)
wordcloud 的意思就是词云,那这个制作词云的库怎么安装?
wordcloud安装指令:pip install wordcloud -i https://pypi.tuna.tsinghua.edu.cn/simples
最后的jieba库的安装同理:pip install jieba -i https://pypi.tuna.tsinghua.edu.cn/simples
很简单对吧?还没有完呢。
第三步就是制作这个词云图。首先你得把你前面搜集的祝福语的txt文件打开,代码如下:
f = open('祝福语.txt', 'r', encoding='utf-8')
text = f.read()
f.close()
f只是一个变量,你可以把它改成任何字母(不要用非法变量名哦)
打开了以后,我们得把它分解一下:
lst = jieba.lcut(text)
m = ' '.join(lst)
这里就要注意:你的词语或句子的间隔使用的是什么字符,是空格吗?如果是空格,那么这段代码你就可以直接搬走,如果你用的是回车,那么就要把第二句改一下:m = '/n'.join(lst)
这是一个分解的指令,就是用来把你的词句分开。
词云的制作重点来了:
s = {'', '', '', ''}
mac = 'PingFang.ttc'
windows = 'simhei.ttf'
w = wordcloud.WordCloud(
width = 1000,
height = 700,
font_path = windows,
stopwords = s,
# 使用参数background_color设置图片背景
# 使用参数colormap设置字体色系
background_color='pink',
colormap='rainbow'
)
w.generate(m)
w.to_file('词云2.png')
因为是用jieba 分词,你知道的,程序并不是百分之百正确,尤其是你搜集的句子,jieba把句子分成一个个词,有些词你会看不懂……
所以,我用了一个不是字典的字典s来存储这些不规则的词。当然,你要先运行一下,看看你的做出来的词云图中哪些词不合理。
width = 1000,
height = 700,
font_path = windows,
stopwords = s,
这段是什么意思呢?W开头的是宽度,H开头的是高度,F开头的是语言,S开头的是不要的词语,也就是说这段代码的意思是:建立一个宽1000,高700,字体&语言为Windows系统默认,不要的词语是字典s中的内容。是不是明白一些了?
词云制作完成,接下来就要用png格式保存
w.to_file('词云2.png') 要写上后缀哦
接下来就要在上面画爱心了,首先把turtle导进来,我相信玩过python的都知道turtle,如果你不知道的话,记得在运行代码前在cmd里输入这段命令:
pip install turtle -i https://pypi.tuna.tsinghua.edu.cn/simples
我们顺便用一下as命令,这样代码会看起来简介一些,就是这样:
import turtle as t
这样,每次写命令的时候就直接用t.XXXX,省的把turtle全拼一遍。
绘画的代码我就不多讲了,直接上代码:
t.bgpic("词云2.png")#将图片设为背景
t.pensize(5) # 调整画笔粗细
t.speed(10) # 调节画笔速度
t.color('red', 'red') # 画笔颜色及填充颜色
t.begin_fill() # 开始填充
t.left(140)
t.fd(111.65)
for i in range(200):
t.right(1)
t.fd(1) # 调用函数
t.left(120)
for i in range(200):
t.right(1)
t.fd(1) # 调用函数
t.fd(111.65)
t.end_fill() # 结束填充
t.hideturtle() # 隐藏画笔
window = t.Screen()
window.exitonclick()
这时候,贺卡就基本完工了,如果你有对你女朋友想说的话,可以写在爱心中。
结尾:这就是一个完整的贺卡制作,如果你想让你的作品更有高大上的感觉,你不妨试一试TK。制作一个窗口,而且我已经写好了代码(大家可以在这段代码的基础上改进一下,因为时间原因,所以做的比较土):
from tkinter import *
root = Tk ()
root.title('由Pycharm x64建立的窗口')
label_1 = Label(root,text = '3.8妇女节快乐')
label_1.pack()
root.mainloop()
注意:这段代码要在turtle画完之后,在
window = t.Screen()
window.exitonclick() 命令之前的那个地方。
最后把完整的代码展示一下:
from PIL import Image
import wordcloud
import jieba
f = open('祝福语.txt', 'r', encoding='utf-8')
text = f.read()
f.close()
lst = jieba.lcut(text)
m = ' '.join(lst)
s = {'', '', '', ''}
mac = 'PingFang.ttc'
windows = 'simhei.ttf'
w = wordcloud.WordCloud(
width = 1000,
height = 700,
font_path = windows,
stopwords = s,
# 使用参数background_color设置图片背景
# 使用参数colormap设置字体色系
background_color='pink',
colormap='rainbow'
)
w.generate(m)
w.to_file('词云2.png')
'''p = Image.open('词云2.png')
p.show()'''
import turtle as t
t.bgpic("词云2.png")
t.pensize(5) # 调整画笔粗细
t.speed(10) # 调节画笔速度
t.color('red', 'red') # 画笔颜色及填充颜色
t.begin_fill() # 开始填充
t.left(140)
t.fd(111.65)
for i in range(200):
t.right(1)
t.fd(1) # 调用函数
t.left(120)
for i in range(200):
t.right(1)
t.fd(1) # 调用函数
t.fd(111.65)
t.end_fill() # 结束填充
t.hideturtle() # 隐藏画笔
from tkinter import *
root = Tk ()
root.title('由Pycharm x64建立的窗口')
label_1 = Label(root,text = '3.8妇女节快乐')
label_1.pack()
root.mainloop()
window = t.Screen()
window.exitonclick()
效果图
如果你不太像要这个色系,那么把页面翻倒词云图制作那里,这里有一张表供你参考(不要看差参数咯)
————————————————————THE END——————————————————