最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Python文本滚动播放器实现代码示例
时间:2022-06-25 02:04:45 编辑:袖梨 来源:一聚教程网
本篇文章小编给大家分享一下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): #字符宽度 text# 源字符长度 strlen = len(source_str) # 引用全局变量 global pos # 如果字符长度-播放位置strlen: #播放位置设为0 pos = 0 # 引用全局变量 global stopflag # 如果当前为播放状态 if playflag: # 睡眠0.3秒后执行滚动函数 widget.after(300, marquee, widget) # 创建标签 show_lb = Label(root, textvariable=show_str,, fg=fgcolor, bg=bgcolor, text=text, font=("Consolas", 10)) # 设定标签位置 show_lb.place(x=0, y=0, , ) 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(" ", 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(" ", moveStart) root.bind_all(" ", move) root.bind_all(" ", doubleClicktoPlay) root.mainloop()
注:
如果文本有换行符,切换不会很流畅
可用此方法删除换行符
相关文章
- 原神伊涅芙是哪个国家的 伊涅芙所属国家介绍 07-12
- 无畏契约源能行动官网地址 官网预约地址介绍 07-12
- ps怎样把相机拍摄的图片制作成手工写实插画的效果? 07-12
- 网站落地页如何设计才能提高网站转化率 07-12
- Html5移动端div固定到底部实现底部导航条的几种方式 07-12
- Win11微软账号登录不上?Win11登录Microsoft账户出错的解决方法 07-12