"""
playktv.py模块,本模块提供playktv函数。
在海龟屏幕显示歌词并播放歌曲。
"""
import time
from turtle import *
from winsound import PlaySound,SND_ASYNC
def playktv(turtle,song_file,lrc_file,fontstyle=("",24,"normal") ):
"""在海龟屏幕显示歌词并播放歌曲
turtle:海龟对象或其子类的实例
song_file:歌曲文件
lrc_file:歌词文件,诸如:[00:00.00]月满西楼
[01:00.12]红藕香残 玉簟秋
上面这样的歌词文件。
fontstyle为三元组,表示用write写字时的字体风格。
"""
x,y = turtle.position() # 歌词中央坐标
fgcolor = turtle.pencolor() # 歌词前景色
bgcolor = turtle.fillcolor() # 歌词背景色
words_list=[] # 歌词列表
words_index=0 # 歌词索引
f = open(lrc_file) # 打开歌词文件
words_=f.readlines() # 读取歌词文件
f.close() # 关闭文件
words_list=[ line.strip() for line in words_ if len(line)>1]
words_lines=len(words_list)
PlaySound(song_file, SND_ASYNC) # 异步播放音效
def get_time_axis(index):
"""获取时间轴"""
songtime=words_list[index]
songtime=songtime.split("]")[0]
songtime=songtime.split(":")
songtimef=songtime[0][1:3]
songtimef=int(songtimef)*60
songtimem=float(songtime[1])
return int((songtimef+songtimem)*1000)
words_index=0
begin_time=time.time()
def display_subtitle():
"""随着音乐显示歌词函数"""
nonlocal words_index # 歌词索引号
nonlocal words_lines # 歌词line数
current_time=time.time()
running_time=(current_time-begin_time)*1000
# 如果逝去的时间大于歌词文件中那个时间点就换歌词
if running_time > get_time_axis(words_index):
turtle.clear()
display_words_=words_list[words_index].split("]")[1]
turtle.goto(x,y)
turtle.color(bgcolor)
# 在左上一个单位印字
turtle.write(display_words_,align='center',font=fontstyle)
turtle.goto(x-1,y+1)
turtle.color(fgcolor)
turtle.write(display_words_,align='center',font=fontstyle)
words_index=words_index+1
if words_index
-
- 2026 年 3 月
- 2026 年 2 月
- 2026 年 1 月
- 2025 年 12 月
- 2025 年 11 月
- 2025 年 10 月
- 2025 年 9 月
- 2025 年 6 月
- 2025 年 5 月
- 2025 年 3 月
- 2025 年 2 月
- 2025 年 1 月
- 2024 年 12 月
- 2024 年 8 月
- 2024 年 6 月
- 2024 年 5 月
- 2024 年 4 月
- 2024 年 3 月
- 2024 年 2 月
- 2023 年 11 月
- 2023 年 9 月
- 2023 年 6 月
- 2023 年 5 月
- 2023 年 4 月
- 2023 年 3 月
- 2023 年 2 月
- 2023 年 1 月
- 2022 年 12 月
- 2022 年 11 月
- 2022 年 10 月
- 2022 年 9 月
- 2022 年 8 月
- 2022 年 7 月
- 2022 年 6 月
- 2022 年 5 月
- 2022 年 4 月
- 2022 年 3 月
- 2022 年 2 月
- 2022 年 1 月
- 2021 年 12 月
- 2021 年 11 月
- 2021 年 10 月
- 2021 年 9 月
- 2021 年 8 月
- 2021 年 7 月
- 2021 年 6 月
- 2021 年 5 月
- 2021 年 4 月
- 2021 年 3 月
- 2021 年 2 月
- 2021 年 1 月
- 2020 年 12 月
- 2020 年 11 月
- 2020 年 10 月
- 2020 年 9 月
- 2020 年 8 月
- 2020 年 7 月
- 2020 年 6 月
- 2020 年 5 月
- 2020 年 4 月
- 2020 年 3 月
- 2020 年 2 月
- 2020 年 1 月
- 2019 年 12 月
- 2019 年 11 月
- 2019 年 10 月
- 2019 年 9 月
- 2019 年 8 月
- 2019 年 7 月
- 2019 年 6 月
- 2019 年 5 月
- 2019 年 4 月
- 2019 年 3 月
- 2019 年 2 月
- 2018 年 3 月
- 2018 年 1 月
- 2017 年 9 月
- 2017 年 5 月
- 2017 年 1 月
