Python 文本滚动播放器的实现代码


Posted in Python onApril 25, 2021

效果

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 相关文章推荐
Python功能键的读取方法
May 28 Python
python简单判断序列是否为空的方法
Jun 30 Python
利用Python如何将数据写到CSV文件中
Jun 05 Python
python集合比较(交集,并集,差集)方法详解
Sep 13 Python
Python2和Python3.6环境解决共存问题
Nov 09 Python
Python中字符串String的基本内置函数与过滤字符模块函数的基本用法
May 27 Python
详解pycharm连接不上mysql数据库的解决办法
Jan 10 Python
Keras:Unet网络实现多类语义分割方式
Jun 11 Python
Python ckeditor富文本编辑器代码实例解析
Jun 22 Python
sklearn的predict_proba使用说明
Jun 28 Python
python中strip(),lstrip(),rstrip()函数的使用讲解
Nov 17 Python
Pygame如何使用精灵和碰撞检测
Nov 17 Python
Python基于Opencv识别两张相似图片
matplotlib之pyplot模块实现添加子图subplot的使用
python实现简单区块链结构
python实现图片九宫格分割的示例
详解python中[-1]、[:-1]、[::-1]、[n::-1]使用方法
Apr 25 #Python
浅谈Python项目的服务器部署
Apr 25 #Python
Python Socket编程详解
Apr 25 #Python
You might like
深入php-fpm的两种进程管理模式详解
2013/06/03 PHP
PHP中常用的输出函数总结
2014/09/22 PHP
PHP微信开发之二维码生成类
2015/06/26 PHP
JS 页面内容搜索,类似于 Ctrl+F功能的实现代码
2007/08/13 Javascript
JavaScript对象和字串之间的转换实例探讨
2013/04/21 Javascript
javascript ajax 仿百度分页函数
2013/10/29 Javascript
一些老手都不一定知道的JavaScript技巧
2014/05/06 Javascript
使用javascript实现json数据以csv格式下载
2015/01/09 Javascript
jQuery获取单击节点对象的方法
2016/06/02 Javascript
基于javascript实现的购物商城商品倒计时实例
2016/12/11 Javascript
javascript 删除数组元素和清空数组的简单方法
2017/02/24 Javascript
微信小程序中使用javascript 回调函数
2017/05/11 Javascript
简单谈谈关于Angular Cli打包的事
2017/09/05 Javascript
JS解决IOS中拍照图片预览旋转90度BUG的问题
2017/09/13 Javascript
Vue常用的几个指令附完整案例
2018/11/06 Javascript
基于js实现数组相邻元素上移下移
2020/05/19 Javascript
javascript实现评分功能
2020/06/24 Javascript
Mac OS X10.9安装的Python2.7升级Python3.3步骤详解
2013/12/04 Python
Python def函数的定义、使用及参数传递实现代码
2014/08/10 Python
对于Python异常处理慎用“except:pass”建议
2015/04/02 Python
web.py在SAE中的Session问题解决方法(使用mysql存储)
2015/06/24 Python
python使用pymysql实现操作mysql
2016/09/13 Python
python实现决策树分类(2)
2018/08/30 Python
Python从文件中读取数据的方法讲解
2019/02/14 Python
linux查找当前python解释器的位置方法
2019/02/20 Python
在Python中COM口的调用方法
2019/07/03 Python
基于python调用psutil模块过程解析
2019/12/20 Python
python rsa-oaep加密的示例代码
2020/09/23 Python
HTML5手指下滑弹出负一屏阻止移动端浏览器内置下拉刷新功能的实现代码
2020/04/10 HTML / CSS
美国购买和销售礼品卡平台:Raise
2017/01/13 全球购物
体育馆的标语
2014/06/24 职场文书
十八大标语口号
2014/10/09 职场文书
求职简历自荐信怎么写
2015/03/26 职场文书
2015年实习生工作总结报告
2015/04/28 职场文书
办公经费申请报告
2015/05/15 职场文书
Mysql 性能监控及调优
2021/04/06 MySQL