Undo feature in tkinter text widget
我试图在
我是这样尝试的:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | from Tkinter import * from ttk import Notebook def OnVsb(*args): text.yview(*args) numbers.yview(*args) def OnMouseWheel(event): text.yview("scroll", event.delta,"units") numbers.yview("scroll",event.delta,"units") return"break" def undo(*argv): text.edit_undo() root = Tk() defaultbg = root.cget('bg') root.bind('<Control-z>', undo) note = Notebook(root) frame = Frame(note, bd=5, relief=GROOVE, padx=5, pady=5) frame.pack() bar = Scrollbar(frame, command=OnVsb) bar.pack(side=RIGHT, fill=Y) numbers = Listbox(frame, width=5, height=30,bg=defaultbg,relief=FLAT, yscrollcommand=bar.set) numbers.pack(side=LEFT, fill=Y) text = Text(frame,bd=3, width=145, height=30, yscrollcommand=bar.set) text.pack(side=LEFT, fill=Y) text.bind("<MouseWheel>", OnMouseWheel) text.tag_config("attr", foreground="tomato") text.tag_config("value", foreground="dark violet") text.tag_config("tags", foreground="dodger blue") text.tag_config("text", font=("Georgia","9","bold")) text.focus_set() root.lift() root.call('wm', 'attributes', '.', '-topmost', '1') root.after_idle(root.call, 'wm', 'attributes', '.', '-topmost', False) root.mainloop() |
但是由于某种原因,它什么也不做。我以为它是默认在文本小部件中实现的,但没有奏效。关于如何在文本小部件上使用此功能的任何建议?任何示例将不胜感激。
好的,我终于找到了信息。
我只需要在初始化文本小部件时将
1 | text = Text(frame,bd=3, width=145, height=30, yscrollcommand=bar.set, undo=True) |
不需要
在Python 2中,必须将