Tkinter Text 复原与重复

Tkinter Text 复原与重复

Text控件有一个简单复原(undo)和重做(redo)的机制,这个机制可以应用于文字删除(delete)和文字插入(insert)。Text控件在默认环境下没有开启这个机制,如果要使用这个机制,可以在Text( )方法内增加undo=True参数。

示例1

增加工具栏,在这个工具栏内有Undo和Redo功能按钮,可以分别执行Undo和Redo工作。

from tkinter import * 
from tkinter import messagebox

def cutJob():                            # Cut方法
    print("Cut operation in progress...")
    text.event_generate("<<Cut>>")
def copyJob():
    print("Copy operation in process...")
    text.event_generate("<<Copy>>")
def pasteJob():
    print("Paste operation is in progress...")
    text.event_generate("<<Paste>>")
def showPopupMenu(event):
    print("Show pop-up menu...")
    popupmenu.post(event.x_root,event.y_root)
def undoJob():
    try:
        text.edit_undo()
    except:
        print("No previous action")
def redoJob():
    try:
        text.edit_redo()
    except:
        print("No previous action")

root = Tk() 
root.title("apidemos.com") 
root.geometry("300x180") 

popupmenu = Menu(root,tearoff=False)
# 在弹出菜单内建立三个命令列表
popupmenu.add_command(label="Cut",command=cutJob)
popupmenu.add_command(label="Copy",command=copyJob)
popupmenu.add_command(label="Paste",command=pasteJob)
# 单击鼠标右键绑定显示弹出菜单
root.bind("<Button-3>",showPopupMenu)

# 建立工具栏
toolbar = Frame(root,relief=RAISED,borderwidth=1)
toolbar.pack(side=TOP,fill=X,padx=2,pady=1)

# 建立Button
undoBtn = Button(toolbar,text="Undo",command=undoJob)
undoBtn.pack(side=LEFT,pady=2)
redoBtn = Button(toolbar,text="Redo",command=redoJob)
redoBtn.pack(side=LEFT,pady=2)

# 建立Text 
text = Text(root,undo=True) 
text.pack(fill=BOTH,expand=True,padx=3,pady=2)
text.insert(END,"Five Hundred Miles\n")           # 插入时同时设置Tag
text.insert(END,"If you miss the rain I'm on,\n")
text.insert(END,"You will know that I am gone.\n")
text.insert(END,"You can hear the whistle blow\n")
text.insert(END,"A hundred miles,\n")

root.mainloop() 

输出:

Tkinter Text 复原与重复

当我们在第46行Text( )构造方法中增加undo=True参数后,程序第14行就可以用text对象调用edit_undo( )方法,这个方法会自动执行Undo动作。程序第19行就可以用text对象调用edit_redo( )方法,这个方法会自动执行Redo动作。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程