Python_tkinter滚动文本字幕

效果:

代码:

from tkinter import *

Move_text="[18:00] 到点, 下班, 一天工资直接到手~"#弹幕文本内容
Move_speed=3#文本移动速度

def on_resize(evt):#维持窗口透明背景
    tk.configure(width=evt.width,height=evt.height)
    canvas.create_rectangle(0, 0, canvas.winfo_width(), canvas.winfo_height(), fill=TRANSCOLOUR, outline=TRANSCOLOUR)

def task():#每隔10ms移动弹幕文本位置
    global x
    
    canvas.delete("mytext")#清除文本
    canvas.create_text(x,50,text=Move_text, tag="mytext",font="微软雅黑 50 bold",fill="white",anchor='w')#在新位置重新绘制文本

    x-=Move_speed#移动位置
    if x<-Screen_Width:
        x=Screen_Width

    tk.after(10, task)

tk = Tk()
Screen_Width=tk.winfo_screenwidth()#获取屏幕横向分辨率
x=Screen_Width
tk.maxsize(Screen_Width+10, 100)#限制窗口最大宽度为屏幕分辨率宽度, tkinter好像不能重新设置已经创建的窗口的大小
tk.geometry('2560x100+-5+-15')#向屏幕外移动一些像素隐藏窗口上和左边框
tk.title('滚动字幕测试')
tk.overrideredirect(True)#无标题栏
tk.attributes('-topmost', True)#置顶
tk.resizable(False, False) # 窗口大小不可变

TRANSCOLOUR = 'gray'#设置窗口背景色为灰色  //设为black时不知道为什么拖不动窗口
tk.wm_attributes('-transparentcolor', TRANSCOLOUR)#设置灰色为透明色,这样所有灰色区域都被认为是透明的了

canvas = Canvas(tk)#创建画布
canvas.pack(fill=BOTH, expand=Y)

tk.bind('<Configure>', on_resize)#tkinter会自动重绘窗口导致透明背景失效, 重写事件维持透明背景
tk.after(10, task)#递归循环,每隔10ms移动弹幕文本位置
tk.mainloop()

tkinter还是有个问题,无边框不是真的无边框还是会有条细线,但PyQt又感觉太麻烦了不想搞,凑活用吧


参考:

tkinter库绘图实例15:制作滚动字幕

python使用tkinter实现透明窗体的开篇之作-基础框架介绍

关于tkinter-gui窗体中循环周期性执行某段代码的方法记录

猜你喜欢

转载自blog.csdn.net/qq_36917144/article/details/129349914