用python制作一套英语记忆小卡片——搭配桌面鹅效果更佳
本帖最后由 ctOS_ 于 2020-4-12 18:34 编辑昨天在论坛里发现了传说中特别捣蛋的桌面宠物鹅(DesktopGoose)
不装mod的情况下就会啃你的鼠标,把一些图片和txt拉到你的桌面
噢,那很烦人吗?
这只鹅为什么不能把我要学习的英语四级单词拉出来给我看看?
我只需要把它预设好的图片改成一个个英文单词就好了!
但是网络上没有齐全的图片形式单词……我就用python写了一个
#先导入所需的包
print('初始化中')
import pygame
import os
import random
import shutil
#拆分单词与翻译部分
def split(word):
place = 0
for i in word:
if i == ' ':
break
place += 1
return place
#随机生成不同颜色,字体的显示形式
def getrtext(text):
#用于随机生成的颜色和字体
dict_color = {'黑色': , '灰色': , '暖灰色': , '品蓝': ,'橘红色': , '森林绿': ,
'白色': , '橘黄色': , '淡黄色': ,
'象牙黑': , '红色': ,
'纯白色': , '桔黄色': , '白杏仁': , '天蓝色': ,
'净白色': , '黄色': }
dict_bcolor = {'白色': , '绿色': , '淡黄色': , '黑色': ,
'深蓝色': }
list_font = ['SIMYOU.TTF', 'simsun.ttc', 'SIMLI.TTF', 'simkai.ttf', 'STZHONGS.TTF', 'STXINWEI.TTF', 'STXIHEI.TTF',
'STSONG.TTF',
'STFANGSO.TTF', 'simfang.ttf'] # 请确认电脑中确实有这个字体(我是在自己Windows目录下找的)
# 设置字体(按之前预设,全随机)
font = pygame.font.Font(os.path.join("C:\\Windows\\Fonts", random.choice(list_font)), random.randint(40,50))
color = random.choice(list(dict_color))
# 为了使字体颜色和背景颜色搭配合理,随机字体颜色后会判断出搭配的背景颜色
if color in ['黑色', '灰色', '暖灰色', '品蓝','橘红色', '森林绿']:
bcolor = '白色'
elif color in ['白色', '橘黄色', '淡黄色']:
bcolor='绿色'
elif color in ['象牙黑', '红色']:
bcolor='淡黄色'
elif color in ['纯白色', '桔黄色', '白杏仁', '天蓝色']:
bcolor = '黑色'
elif color in ['净白色', '黄色']:
bcolor='深蓝色'
#把设置写入rtext
rtext = font.render(text, True, (dict_color, dict_color, dict_color),
(dict_bcolor, dict_bcolor, dict_bcolor))
#返回
return rtext
#初始化pygame
pygame.init()
#打开词汇列表,将内容以列表形式存入data中
file=open('word.txt',encoding='utf-8')
data=file.readlines()
#关闭txt文档
file.close()
#获取行数(每行一个单词,行数即单词量)
length=len(data)
#开始遍历
i=0
name_dir='words' #保存的文件夹名
try:
print('创建记忆卡包')
os.mkdir(name_dir)
except FileExistsError:
print('记忆卡包已存在')
print('正在删除')
shutil.rmtree(name_dir, ignore_errors=False, onerror=None)
print('删除成功,创建记忆卡包')
os.mkdir(name_dir)
while i < length:
if i==0:
print("生成第1张记忆卡片")
elif (i+1) % 200 == 0:
print('已经生成了'+str(i+1)+'张记忆卡片')
data_line = data #读取第i行
place = split(data_line) #单词和翻译中间有空格,记录空格位置
line_word = data_line[:place] #读取单词
line_mean = data_line #读取翻译
pygame.image.save(getrtext(data_line), "words\\"+line_word + ".png")#生成图片
i += 1
print(str(i+1)+ "张小卡片制作完成" )
(形成图片的文字颜色和背景色,字体之类可以按照喜好调整)
它现在办到了。
一只以捣蛋为目的,让你学习英语的鹅,诞生了!(鼓掌)
同样它拖出来的txt文档也可以按喜好改呀
事实上,我本来打算单词和翻译分两行显示
但是网上找不到pygame实现多行文字形成图片的方法
有没有大佬告知一下(单行显示,图片实在有点长)
附上网上找的四级词汇表
感谢分享 思路清奇,值得一赞!{:1_921:} 感谢分享 😙 一股清流。。 本帖最后由 ctOS_ 于 2020-4-13 11:17 编辑
添加了几行代码,现在会顺便生成txt形式的单词文档了
(当然是给鹅搭配使用的)
坛友发的DesktopGoosev0.3
#先导入所需的包
print('初始化中')
import pygame
import os
import random
import shutil
name_dir='words' #保存的文件夹名
#拆分单词与翻译部分
def split(word):
place = 0
for i in word:
if i == ' ':
break
place += 1
return place
#随机生成不同颜色,字体的显示形式
def getrtext(text):
#用于随机生成的颜色和字体
dict_color = {'黑色': , '灰色': , '暖灰色': , '品蓝': ,'橘红色': , '森林绿': ,
'白色': , '橘黄色': , '淡黄色': ,
'象牙黑': , '红色': ,
'纯白色': , '桔黄色': , '白杏仁': , '天蓝色': ,
'净白色': , '黄色': }
dict_bcolor = {'白色': , '绿色': , '淡黄色': , '黑色': ,
'深蓝色': }
list_font = ['SIMYOU.TTF', 'simsun.ttc', 'SIMLI.TTF', 'simkai.ttf', 'STZHONGS.TTF', 'STXINWEI.TTF', 'STXIHEI.TTF',
'STSONG.TTF',
'STFANGSO.TTF', 'simfang.ttf'] # 请确认电脑中确实有这个字体(我是在自己Windows目录下找的)
# 设置字体(按之前预设,全随机)
font = pygame.font.Font(os.path.join("C:\\Windows\\Fonts", random.choice(list_font)), random.randint(40,50))
color = random.choice(list(dict_color))
# 为了使字体颜色和背景颜色搭配合理,随机字体颜色后会判断出搭配的背景颜色
if color in ['黑色', '灰色', '暖灰色', '品蓝','橘红色', '森林绿']:
bcolor = '白色'
elif color in ['白色', '橘黄色', '淡黄色']:
bcolor='绿色'
elif color in ['象牙黑', '红色']:
bcolor='淡黄色'
elif color in ['纯白色', '桔黄色', '白杏仁', '天蓝色']:
bcolor = '黑色'
elif color in ['净白色', '黄色']:
bcolor='深蓝色'
#把设置写入rtext
rtext = font.render(text, True, (dict_color, dict_color, dict_color),
(dict_bcolor, dict_bcolor, dict_bcolor))
#返回
return rtext
#生成单个单词的txt
def txtword(word,means):
file = open('txt\\'+word+ '.txt','a',encoding='utf-8')
file.write(" "+word)
file.write("\n"+ means)
file.close()
#初始化pygame
pygame.init()
#打开词汇列表,将内容以列表形式存入data中
file=open('word.txt',encoding='utf-8')
data=file.readlines()
#关闭txt文档
file.close()
#获取行数(每行一个单词,行数即单词量)
length=len(data)
#开始遍历
i=0
try:
print('创建记忆卡包')
os.mkdir(name_dir)
except FileExistsError:
print('记忆卡包已存在')
print('正在删除')
shutil.rmtree(name_dir, ignore_errors=False, onerror=None)
print('删除成功,创建记忆卡包')
os.mkdir(name_dir)
try:
print('创建txt独立文档')
os.mkdir('txt')
except FileExistsError:
print('txt独立文档已存在')
print('正在删除')
shutil.rmtree('txt', ignore_errors=False, onerror=None)
print('删除成功,创建独立文档')
os.mkdir('txt')
while i < length:
if i==0:
print("生成第1张记忆卡片")
elif (i+1) % 200 == 0:
print('已经生成了'+str(i+1)+'张记忆卡片')
data_line = data #读取第i行
place = split(data_line) #单词和翻译中间有空格,记录空格位置
line_word = data_line[:place] #读取单词
line_mean = data_line #读取翻译
path = name_dir+'\\'+line_word
txtword(line_word,line_mean)
pygame.image.save(getrtext(data_line), path + ".png")#生成图片
i += 1
print(str(i+1)+ "张小卡片制作完成" )
本帖最后由 dengwen168 于 2020-4-14 16:25 编辑
楼主,你的想法比较奇特啊。
页:
[1]