众所周知,python是个好东西,可以帮你制作折线图啊、饼图啊什么的,还能写爬虫、Web开发、图像处理,甚至能控制你的Office。那你肯定有想过用turtle库画画,而这次,我要整一个大的。

先说一下思路:首先贺卡上得有祝福语吧,即使是词语也行。我们就可以使用这些祝福句子、祝福词语制作一个词云图,用turtle打开词云图后,在上面画一个爱心,然后在爱心里写上你要说的话。

第一步就是搜集一些祝福的句子、词语,这个我可帮不了你,所以自己在网上搜,然后用一个记事本把它们记录下来,保存的时候检查一下后缀必须是txt,编码是UTF-8。




python新年贺卡 用python制作电子贺卡_Powered by 金山文档


注意看图片下方的信息,千万别搞错咯~

(注意:建议内容要和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()


python新年贺卡 用python制作电子贺卡_词云_02


效果图

如果你不太像要这个色系,那么把页面翻倒词云图制作那里,这里有一张表供你参考(不要看差参数咯)


python新年贺卡 用python制作电子贺卡_词云_03


————————————————————THE END——————————————————