Tkinter 如何让画布中的文字不出去,在里面来回运动
from tkinter import *
root=Tk()
def move_n():
m.move(n,5,0)
root.after(200,move_n)
m=Canvas(root,width=333,height=444,background="ghostwhite")
m.pack()
point=222,160
n=m.create_text(point,text="3-8 妇女节",fill="magenta")
move_n()
mainloop()
如何让画布中的文字不出去,在里面来回运动? 要让画布中的文字在里面来回运动,你可以在移动文字时检测文字的位置,并在其到达画布边缘时反转运动方向。以下是一个改进的示例代码:
from tkinter import *
root = Tk()
def move_text():
global dx
# 获取文字边界
x1, y1, x2, y2 = m.bbox(n)
# 如果文字到达画布的左右边界,则反转方向
if x2 >= m.winfo_width() or x1 <= 0:
dx = -dx
# 移动文字
m.move(n, dx, 0)
root.after(200, move_text)
m = Canvas(root, width=333, height=444, background="ghostwhite")
m.pack()
# 初始位置
point = 222, 160
# 创建文字
n = m.create_text(point, text="3-8 妇女节", fill="magenta")
# 设定文字移动速度
dx = 5
# 启动文字移动
move_text()
mainloop()
在这个示例中,用了m.bbox(n)来获取文字的边界,以此判断文字是否到达画布边缘,并通过改变变量dx的值来反转方向。只要检测到文字超出边界或即将超出边界,就调整其移动方向。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 要实现文字在画布边界内来回运动,需要添加位置检测逻辑。首先获取画布宽度,每次移动时检查文字位置是否超出边界,若到达右边缘则将水平移动量设为负数,到达左边缘则设为正数。同时需要获取文字对象的实际尺寸,使用canvas.bbox()方法精确判断边界碰撞。
页:
[1]