You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CustomTkinter文本框Control-Z/Control-Y撤销重做功能失效求助

解决CustomTkinter中CTkTextbox的撤销/重做功能问题

实现方案

CTkTextbox本质封装了tkinter原生的Text组件,可直接调用原生组件的撤销/重做方法,通过绑定快捷键即可实现功能:

  • 绑定Ctrl+Z到撤销操作,绑定Ctrl+Y到重做操作
  • 访问CTkTextbox的_textbox属性获取内部原生Text组件,调用其edit_undo()和edit_redo()方法

完整代码示例

import customtkinter as CTk

class App(CTk.CTk):
    def __init__(self):
        super().__init__()
        self.FontList = ("Arial", 12)
        
        self.Entry = CTk.CTkTextbox(self, width=816, height=420, font=self.FontList)
        self.Entry.grid(row=1, column=0)
        
        # 绑定Windows/Linux平台快捷键
        self.Entry.bind("<Control-z>", lambda e: self.Entry._textbox.edit_undo())
        self.Entry.bind("<Control-y>", lambda e: self.Entry._textbox.edit_redo())
        # 绑定Mac平台快捷键
        self.Entry.bind("<Command-z>", lambda e: self.Entry._textbox.edit_undo())
        self.Entry.bind("<Command-shift-z>", lambda e: self.Entry._textbox.edit_redo())

if __name__ == "__main__":
    app = App()
    app.mainloop()

关键说明

  • CTkTextbox._textbox是组件内部的原生tkinterText对象,原生组件自带完善的撤销/redo逻辑
  • 同时兼容Windows/Linux和Mac平台的快捷键习惯,提升使用体验

内容的提问来源于stack exchange,提问作者Vihaan Mody

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 17:27:10