Python+tkinter中Text组件编辑历史链表分割边界的作用
董付国.《Python题库精选--学、问、练、赛、测、考一体化教程》(ISBN:978-7-302-69693-3),清华大学出版社,2025年8月出版教材精选3634个客观题和832个编程题,每章开头可以扫描二维码查看参考答案。所有题目都可以在配套软件中在线练习。Python+tkinter程序中,Text组件默认不支持撤销操作,除非设置了属性undo=True。开启撤销操作支持之后,可以使用Text组件的方法edit_undo()撤销上一个操作,edit_redo()方法恢复刚刚撤销的操作。Text组件维护了一个编辑历史链表,通过指针的前后移动来实现撤销和恢复操作,每次撤销或重做都是撤销至上一个分割边界或恢复至下一个分割边界。如果撤销了某个操作之后又做了其他操作,则无法恢复已撤销的操作。也就是说,先输入1234(每输入一个字符后单击一下鼠标),撤销4之后再输入5678(每输入一个字符后单击一下鼠标),然后连续撤销时被撤销的字符依次为8、7、6、5、3、2、1。默认情况下,Text组件会在用户切换操作时自动插入隐式的分割边界,例如从键盘操作切换为鼠标操作、从输入操作切换为删除操作、按下Enter键等。如果没有明显的状态切换,例如连续输入多个字符或连续删除多个字符时,算一个操作。如果想修改默认的撤销行为,可以在同一个操作过程中的适当时机显式调用方法edit_separator()插入分割边界。关注微信公众号“Python小屋”,在公众号后台发送消息“大事记”可以查看董付国老师与Python有关的重要事件;发送消息“教材”可以查看董付国老师出版的Python系列教材(累计印刷超过260次)的适用专业详情;发送消息“历史文章”可以查看董付国老师推送的超过1400篇原创技术文章;发送消息“会议”可以查看近期董付国老师的培训安排;发送消息“微课”可以查看董付国老师免费分享的超过700节Python微课视频;发送消息“课件”可以查看董付国老师免费分享的Python教学资源;发送消息“小屋刷题”可以下载“Python小屋刷题神器”,免费练习6600道客观题和915道编程题,题库持续更新;发送消息“编程比赛”了解Python小屋编程大赛详情。