慕尼黑的夜晚无繁华
这是一个人为的例子,它都有一个改变年龄的按钮,并且每秒都会更新一次时间。它使用上下文管理器执行此操作,该管理器保留插入光标,然后插入或删除您想要的任何文本。这不是特别好的编码风格,但它显示了 tkinter 可以用它的文本小部件做什么。import tkinter as tkfrom datetime import datetimefrom contextlib import contextmanager@contextmanagerdef preserve_insert_cursor(text): """Performs an action without changing the insertion cursor location""" saved_insert = text.index("insert") yield text.mark_set("insert", saved_insert)def change_age(): """Change the age on line 3""" with preserve_insert_cursor(text): text.delete("3.5", "3.0 lineend") text.insert("3.5", "30")def update_time(): with preserve_insert_cursor(text): # find all ranges of text tagged with "time" and replace # them with the current time now = datetime.now() timestring = now.strftime("%H:%M:%S") ranges = list(text.tag_ranges("time")) while ranges: start = ranges.pop(0) end = ranges.pop(0) text.delete(start, end) text.insert(start, timestring, "time") # call this function again in a second text.after(1000, update_time)root = tk.Tk()header = tk.Frame(root, bd=1, relief="raised")text = tk.Text(root)header.pack(side="top", fill="x")text.pack(fill="both", expand=True)button = tk.Button(header, text="Button", command=change_age)button.pack(side="right", padx=10)# insert "Time:" with no tags, "<time>" with the tag "time",# and then a newline with no tagstext.insert("end", "Time: ", "", "<time>", "time", "\n")text.insert("end", "Name: John\n")text.insert("end", "Age: 32\n")text.insert("end", "Gender: Male\n")update_time()root.mainloop()您无法从静态屏幕截图中分辨出来,但如果您运行代码,您会看到时间会实时更新,即使您正在键入。