怎样用Python实现文本的滚动播放?
Admin 2021-08-17 群英技术资讯 564 次浏览
怎样用Python实现文本的滚动播放?对于文本滚动播放的应用场景有很多,我们经常能在网站的顶部看到,文本滚动播放功能也是比较实用的,下面我们就来看看用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文本滚动播放有帮助,想要了解更多Python实现动态的效果,大家可以关注其他相关文章。
文本转载自脚本之家
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
大部分程序和语言中的随机数,其实都只是伪随机。是由可确定的函数(常用线性同余),通过一个种子(常用时钟)产生的。直观来想,计算机就是一种确定的、可预测的的设备:一行行的代码是固定的,一步步的算法是固定的,一个个与非门是固定的。
这篇文章给大家分享的是python新式类和旧式类的内容,一些朋友对于python新式类和旧式类的区别以及使用不是很了解,因此下文就给大家来简单的介绍一下,本文对大家学习Python有一定的帮助,接下来就跟随小编来看看python新式类和旧式类不同在哪吧?
本文主要介绍了使用spyder3调试python程序的实现步骤,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
这篇文章主要介绍了Python字符串中如何去除数字之间的逗号,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
这篇文章主要介绍了Tensorflow中使用cpu和gpu有什么区别,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008