python - 如何使用函数更新Tkinter窗口的屏幕(画布)

时间:2013-11-18 19:24:09

标签: python canvas

我搜索过但没有找到答案。 如何通过在每个数字后更新窗口并使用函数而不是类来显示画布中用户的给定数字? 这是我的代码。

# Import the module
from Tkinter import *

root = Tk()

# intialize globals
value = 98

# Define event handler functions
canvas = Canvas(width=100, height=100, bg='blue')
canvas.pack(expand=YES, fill=BOTH)

def enter():
    global value
    value = float(Enter_number.get())
    canvas.create_text(20, 20, text=str(value))

# Register event handlers
Enter_number = Entry(root)
Enter_number.pack()
Button(root,text="Get Number",command = enter).pack(side=TOP, fill=X)

# Start frame and timers
root.mainloop()

1 个答案:

答案 0 :(得分:0)

您可以使用canvas.delete从画布中删除以前绘制的元素。

value = float(Enter_number.get())
canvas.delete(ALL)
canvas.create_text(20, 20, text=str(value))

或者,您可以跟踪create_text给出的项ID,并使用canvas.itemconfig更改现有文本项的文本,而不是创建新文本项。通常我会在类中保留对id的引用,但是因为你禁止它,你可以使用全局。

text_id = None

def enter():
    global value
    global text_id
    value = float(Enter_number.get())
    if text_id == None:
        text_id = canvas.create_text(20, 20, text=str(value))
    else:
        canvas.itemconfig(text_id, text=str(value))