Python重写Tkin中的文本

2024-09-24 04:19:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我在更新画布上的倒计时文本时遇到了一些问题。我当前的代码会留下文本应该为空的区域。在

我试过把它放在不同的地方,但是它们都没有效果,或者和我上面描述的一样。删除canvas.delete函数只会导致新的时间被写在旧的时间之上。在

以下是我当前的代码:

def cdtimerr():
    global cdtimer
    cdtimer -= 1
    cdtext = canvas.create_text(510, 6, text=cdtimer, font="Ubuntu 29 bold", anchor = NW) 
    if cdtimer == 0 :
        canvas.delete(ALL)
        scorescreen()
    else:
        canvas.after(1000, cdtimerr)
        canvas.after(1000, canvas.delete(cdtext))

另外,如果我按下画布上加载另一个屏幕的退出按钮,我该如何提前终止计时器呢?目前,如果我加载另一个屏幕计时器仍然继续。在


Tags: 代码text文本区域屏幕画布时间delete
1条回答
网友
1楼 · 发布于 2024-09-24 04:19:39

取消计时器。保存after的返回值,用保存的值调用after_cancel。在

from Tkinter import *

remain = 11
_timer = None
def cdtimerr():
    global remain, _timer
    remain -= 1
    cdtext = canvas.create_text(510, 6, text=remain, font="Ubuntu 29 bold", anchor=NW) 
    if remain == 0:
        canvas.delete(ALL)
    else:
        _timer = canvas.after(1000, lambda: (canvas.delete(cdtext), cdtimerr()))

root = Tk()
root.geometry('1024x768')
canvas = Canvas(root)
canvas.pack(expand=1, fill=BOTH)
_timer = canvas.after(0, cdtimerr)
Button(root, text='Cancel', command=lambda: canvas.after_cancel(_timer)).pack()
root.mainloop()

相关问题 更多 >