Tkinter中的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))

另外,如果我按下加载另一个屏幕的画布上的退出按钮,我将如何过早终止计时器?目前,如果我加载另一个屏幕,计时器仍会继续。

虚假的

取消计时器。保存的返回值afterafter_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()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章