python tkinter刷新界面_Python Tkinter刷新画布

在Python中使用Tkinter库创建动画时遇到问题。作者尝试根据元组中的节点颜色绘制正方形并逐步改变颜色,但只有最后一个节点的颜色正确显示。代码中使用了`time.sleep()`函数来实现动画间隔,然而这导致了中间状态没有正确呈现。作者寻求帮助以解决这个问题。
摘要由CSDN通过智能技术生成

您好我在python中有一个元组,其颜色与通过以下字典在画布中绘制的正方形相关:

colour_mapping = {0: "red", 1: "green", 2: "blue" , 3:"purple"}

更具体地说,例如元组中的节点是:

((2, 3), (3, 3))

这意味着应该以这种方式绘制4个方格:

blue square purple square

purple square purple square

然后他们的颜色应该相应地更改为我的元组中的下一个节点

为此,我迭代元组,对于每个元素,我在画布上绘制一个新的矩形,然后我调用 time.sleep() 函数,以便给用户时间以查看与先前状态的差异 . 我的问题是只有最后一个节点正确呈现而其他所有节点都没有显示 . 你能帮助我吗?

到目前为止,这是我的代码:

self.parent.title("AlienTiles")

self.style = Style()

self.style.theme_use("default")

self.frame = Frame(self, relief=RAISED, borderwidth=1)

self.frame.pack(fill=BOTH, expand=1)

self.canvas = Canvas(self.frame)

self.canvas.pack(fill=BOTH, expand=1)

self.pack(fill=BOTH, expand=1)

for i in range(len(path)) : #the tuple is path

state = path[i].state

print state

time.sleep(1)

y_offset=10

for x in state:

start_x=40

start_y=10

i=1

x_offset=0

for y in x:

x0=(start_x*i)+x_offset

y0=(start_y*i)+y_offset

x1=x0+size

y1=y0+size

colour=colour_mapping[y]

print colour

self.canvas.create_rectangle(x0, y0, x1, y1, fill=colour)

x_offset=x_offset+size+10

y_offset=y_offset+size+10

总而言之,我尝试制作上述动画 . 有什么我不正确的想法或在每个循环刷新画布的东西?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值