Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def ctrl_cursor(event):
- """Controls the cursor movement in Entry Box widgets when using Ctrl.
- Example: Ctrl + Left Arrow will move left until non-word character.
- Example: Ctrl + BackSpace will delete the last word.
- """
- cursor_pos = event.widget.index(INSERT)
- if event.widget.cget("show"):
- delete_range = (cursor_pos, END) if event.keysym == "BackSpace" else (END, cursor_pos)
- event.widget.delete(*delete_range)
- return
- idx = 0
- content = event.widget.get()
- if event.keysym == "BackSpace":
- match_word = re.search(r"\W\w*$", content[:cursor_pos])
- match_char = re.search(r"\W+$", content[:cursor_pos])
- if match_char:
- idx = match_char.start()
- elif match_word:
- idx = match_word.start() + 1
- event.widget.delete(idx, cursor_pos)
- elif event.keysym == "Delete":
- cursor_pos = event.widget.index(INSERT)
- match_word = re.search(r"^\w+", content[cursor_pos:])
- match_char = re.search(r"^\W+", content[cursor_pos:])
- if match_word:
- idx = len(content) - len(content[cursor_pos:]) + match_word.end()
- elif match_char:
- idx = len(content) - len(content[cursor_pos:]) + match_char.end()
- event.widget.delete(cursor_pos, idx)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement