想做一个提示消息,做成会闪动的样式,但是tkinter没有提供这样的方法。所以我就自己做了一个标签,通过定时改变标签的位置达到一个简单的闪动效果。
方法也很简单,方法一和方法二都是每0.1秒改变一次位置。由于方法二的位置不确定性更高,所以方法二的闪动效果会比方法一更加好。同时方法二是不阻塞的,方法一是阻塞的,如果界面有其他布局要响应,方法一要开启一个线程,否则界面会假死,不能响应事件。
如果要显示的信息太长,Label可能会显示不完整,这个时候就可以使用tkinter的Message代替Label,Message可以会将内容自动断行,在默认情况下,Message组件会按照宽高比150%来进行换行,当然这个值也可以通过aspect参数进行自定义。
from tkinter import *
import time
import random
import os
root = Tk()
root.geometry('600x100')
root.title("闪动Label")
canvas = Canvas(root, width=600, height=100)
canvas.pack()
label = Label(canvas, text='xx提问:有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少? 这道题怎么做啊', fg='green')
label.pack()
# 方法一
def flashing_1():
'''X轴斜线移动,y轴随机'''
flag = True
while True:
if flag:
for i in range(0, 10):
label.place(x=i, y=random.randint(1, 10))
time.sleep(0.1)
canvas.update()