ctOS_ 发表于 2020-4-12 17:12

用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实现多行文字形成图片的方法
有没有大佬告知一下(单行显示,图片实在有点长)

附上网上找的四级词汇表

vethenc 发表于 2020-4-12 18:12

感谢分享

三滑稽甲苯 发表于 2020-4-12 21:55

思路清奇,值得一赞!{:1_921:}

喜欢你和酸奶 发表于 2020-4-12 22:57

感谢分享 &#128537;

91大神上天猫 发表于 2020-4-13 10:41

一股清流。。

ctOS_ 发表于 2020-4-13 11:15

本帖最后由 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:11

本帖最后由 dengwen168 于 2020-4-14 16:25 编辑

楼主,你的想法比较奇特啊。


页: [1]
查看完整版本: 用python制作一套英语记忆小卡片——搭配桌面鹅效果更佳