【问题标题】:How to undo the last thing a user typed in a text field when he/she presses a button?如何撤消用户按下按钮时在文本字段中键入的最后一件事?
【发布时间】:2014-07-10 00:28:13
【问题描述】:

如果用户单击菜单按钮,它将触发一个功能,该功能将撤消用户上次键入的内容。我该怎么做呢?

【问题讨论】:

  • 首先显示您的代码。第二:你的意思是什么GUI——PySide、PySQ、wxPython、Tkinter、HTML?你的意思是什么按钮 - 'UNDO'? “好的”?
  • Tkinter,我不需要帮助来制作我已经设置好的按钮我只是不知道如何制作撤消部分我已经准备好功能它只是我需要的撤消部分帮助。
  • 要撤消,您必须记住之前文本字段中的内容 - 仅此而已。
  • @furas 我不想撤消他们输入的所有内容。我试图让它撤消他们输入的最后一个单词或字母。我该如何获得它们?
  • 将功能绑定到“按下按键”并记住所有按下的按键。

标签: python text widget undo


【解决方案1】:

监控文本框中的每次击键,并在每次更改堆栈结构后保存文本框的内容。当您遇到一个单词分隔字符时,将已经在堆栈中的该单词的单个字符更改替换为一个新条目,该条目是刚刚输入的整个单词。当用户按下撤消键时,您只需将最后一个值从堆栈中弹出并将其放入文本框中。

这将允许您在用户正在输入单词时一次撤消单个字符的更改,并且如果用户完成输入,则将撤消最后一个完整的单词。

【讨论】:

    【解决方案2】:

    如何删除选中的文本

    from Tkinter import *
    
    def clear():
        if txt.tag_ranges(SEL):
            txt.delete(SEL_FIRST, SEL_LAST)
    
    master = Tk()
    
    txt = Text(master)
    txt.pack()
    
    bt = Button(master, text='Delete selected', command=clear)
    bt.pack()
    
    master.mainloop()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-07
      相关资源
      最近更新 更多