Python-pack仅在方法完成后生效
我正在做一个小游戏,在这个游戏中,你输入一些数量n,你会得到n个随机颜色的颜色框。3秒钟后,提示用户尝试调用颜色帧的顺序 请注意,倒计时后的事件尚未执行(应该没有问题) 我有一种方法可以隐藏输入字段和确认按钮,显示颜色,并进行倒计时:Python-pack仅在方法完成后生效,python,tkinter,Python,Tkinter,我正在做一个小游戏,在这个游戏中,你输入一些数量n,你会得到n个随机颜色的颜色框。3秒钟后,提示用户尝试调用颜色帧的顺序 请注意,倒计时后的事件尚未执行(应该没有问题) 我有一种方法可以隐藏输入字段和确认按钮,显示颜色,并进行倒计时: def startgame(colornumber): #colornumber is the amount of frames ... colors=[] #array of "Frame" elements #loop that cre
def startgame(colornumber): #colornumber is the amount of frames
...
colors=[] #array of "Frame" elements
#loop that creates the colored frames
for i in range (0, colornumber):
colors.append(Frame(window, width=60, height=60, background=randomcolor()))
colors[i].pack(side=LEFT)
#randomcolor() is a method that returns a random color string
#like "white" or "red"
#countdown loop
for i in range(0, 3):
time.sleep(1) #do nothing for 1 second
label.configure(text="ASD") #Count down
print(str(3-i))
label.configure(text="What was the order? Click on the colors to choose")
该按钮调用函数如下:
colorNumberInput = Entry(window)
colorNumberInput.pack()
buttonConfirmNumber = Button(window, ..., command=lambda: startgame(int(colornumberInput.get()))
buttonConfirmNumber.pack()
由于某些原因,语句color[i].pack(side=LEFT)
的效果仅在方法完成执行后发生;也就是说,在倒计时循环完成之后。结果是颜色出现在倒计时之后,而不是倒计时之前。我尝试将print
语句放入创建彩色边框的循环中,但它仍然执行
为什么
pack(element)
仅在调用它的方法结束后才显示小部件?有什么办法可以解决这个问题吗?Tkinter只能通过响应事件来刷新显示。当代码正在运行或程序正在休眠时,它无法响应事件
一个快速修复方法是在需要刷新屏幕时调用
window.update\u idletasks()
。这通常不是最好的解决方案,但通常已经足够好了。在某些情况下“足够好”,但是时间。睡眠几乎总是很糟糕;在完全没有响应的GUI上花费三秒钟对用户来说是非常不友好的。@ShadowRanger:这里没有争论。