Python 文本滚动播放器的实现代码
效果
双击开始播放,继续双击可以加速播放
右键可以弹出菜单:播放、暂停、退出
左键可以拖动窗口
代码
from tkinter import *import time import tkinter as tk file = "待播放文本.txt"text=" " bgcolor = '#000000'fgcolor = '#FFFFFF' def getText(): global text # 读 with open(file, "r",encoding='utf-8') as f: # 按字节读 text = f.read() #获取一行getText()root = Tk()# 窗口设定为无边框root.overrideredirect(True)# 窗口前置root.wm_attributes("-topmost", 1)# 窗口属性 透明度设置root.attributes("-alpha", 0.8)# 窗口标题# root.title("文本播放器")# 窗口大小root.geometry("200x35+100+100")# 更新显示文本show_str = StringVar(root)# 初始显示文本show_str.set("双击播放")# 源字符source_str = text# 播放标记playflag = True # 播放位置pos = 0# 滚动def marquee(widget): #字符宽度 textwidth = 18 # 源字符长度 strlen = len(source_str) # 引用全局变量 global pos # 如果字符长度-播放位置<textwidth if strlen - pos < textwidth: # 设定显示的字符串为源字符串的(播放位置,播放位置+文本宽度)+ 源字符串的(0,10-字符串长度+播放位置) show_str.set(source_str[pos:pos+textwidth] + source_str[0:textwidth - strlen + pos]) else: # 如果大于textwidth,则播放(播放位置,播放位置+文本宽度)的字符 show_str.set(source_str[pos:pos+textwidth]) #播放位置+1 pos += 1 #如果播放位置大于字符串长度 if pos > strlen: #播放位置设为0 pos = 0 # 引用全局变量 global stopflag # 如果当前为播放状态 if playflag: # 睡眠0.3秒后执行滚动函数 widget.after(300, marquee, widget) # 创建标签show_lb = Label(root, textvariable=show_str,width=300, fg=fgcolor, bg=bgcolor, text=text, font=("Consolas", 10))# 设定标签位置show_lb.place(x=0, y=0, width=200, height=35) def doubleClicktoPlay(event): global playflag # 播放 playflag = True marquee(show_lb) def playStart(): global playflag # 播放 playflag = True marquee(show_lb) def playStop(): global playflag # 暂停播放 playflag = False # 创建弹出式菜单menu = tk.Menu(root, tearoff=0)# 为菜单添加命令标签menu.add_command(label="播放", command=playStart) menu.add_command(label="暂停", command=playStop)menu.add_command(label="退出", command=exit) def popUpMenu(event): #在鼠标点击的位置弹出菜单 menu.post(event.x_root, event.y_root) # 为消息事件(按键、点击)绑定函数root.bind_all("<ButtonRelease-3>", popUpMenu) def moveStart(event): global startX, startY #获取鼠标的点击位置的x、y startX = event.x startY = event.y def move(event): #新坐标=鼠标点击坐标+窗口坐标-初始坐标 new_x = (event.x) + root.winfo_x() - startX new_y = (event.y) + root.winfo_y() - startY s = "200x35+" + str(new_x) + "+" + str(new_y) # 重新设置窗口大小及其位置 root.geometry(s) # 为消息事件(按键、点击)绑定函数root.bind_all("<Button-1>", moveStart) root.bind_all("<B1-Motion>", move)root.bind_all("<Double-Button-1>", doubleClicktoPlay) root.mainloop()
注:
如果文本有换行符,切换不会很流畅
可用此方法删除换行符
到此这篇关于python 文本滚动播放器的文章就介绍到这了,更多相关python滚动播放器内容请搜索 以前的文章或继续浏览下面的相关文章希望大家以后多多支持 !
最后更新于 2021-11-22 08:21:39 并被添加「」标签,已有 位童鞋阅读过。
本站使用「署名 4.0 国际」创作共享协议,可自由转载、引用,但需署名作者且注明文章出处
相关文章
- 芊芬贝氏云柔安心裤卫生巾防漏安睡裤量大防漏均码3条*2包姨妈巾
- AI:如何训练机器学习的模型
- td钢丝球清洁球家用厨房洗碗擦锅不锈钢不掉丝铁丝
- e洁家用自动收口垃圾袋加厚提绳厨房家务塑料袋中小号趣味图案3卷
- python实战之德州扑克第二步-判断牌型