Advertisement
Guest User

Control cursor

a guest
Apr 18th, 2024
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.31 KB | Source Code | 0 0
  1. def ctrl_cursor(event):
  2.     """Controls the cursor movement in Entry Box widgets when using Ctrl.
  3.    Example: Ctrl + Left Arrow will move left until non-word character.
  4.    Example: Ctrl + BackSpace will delete the last word.
  5.    """
  6.     cursor_pos = event.widget.index(INSERT)
  7.     if event.widget.cget("show"):
  8.         delete_range = (cursor_pos, END) if event.keysym == "BackSpace" else (END, cursor_pos)
  9.         event.widget.delete(*delete_range)
  10.         return
  11.     idx = 0
  12.  
  13.     content = event.widget.get()
  14.     if event.keysym == "BackSpace":
  15.         match_word = re.search(r"\W\w*$", content[:cursor_pos])
  16.         match_char = re.search(r"\W+$", content[:cursor_pos])
  17.  
  18.         if match_char:
  19.             idx = match_char.start()
  20.         elif match_word:
  21.             idx = match_word.start() + 1
  22.  
  23.         event.widget.delete(idx, cursor_pos)
  24.  
  25.     elif event.keysym == "Delete":
  26.         cursor_pos = event.widget.index(INSERT)
  27.  
  28.         match_word = re.search(r"^\w+", content[cursor_pos:])
  29.         match_char = re.search(r"^\W+", content[cursor_pos:])
  30.  
  31.         if match_word:
  32.             idx = len(content) - len(content[cursor_pos:]) + match_word.end()
  33.         elif match_char:
  34.             idx = len(content) - len(content[cursor_pos:]) + match_char.end()
  35.  
  36.         event.widget.delete(cursor_pos, idx)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement