需要反转 tk 文本框小部件 event/handler 优先级 - python

need to reverse tk textbox widget event/handler priority - python

我有一个文本框小部件,它有 2 个事件绑定,如下所示:

F2_text_editor.bind('<Return>', lambda e: on_key_release())
F2_text_editor.bind("<BackSpace>", lambda e: on_key_release(), add="+")

我正在为我的文本编辑器添加行号。到目前为止一切都很好,但我遇到的最后一个问题不是我认为可以解决的问题吗?

基本上发生的事情是,当我按下键盘上的任一绑定键时,它会执行功能,然后从键盘本身完成操作。

例如,假设我有一个绑定和一个打印消息的函数。 当我点击 Return 时,它会打印出消息,然后将光标移动到下一行。 有没有办法扭转这种局面?

这里是代码:

def on_key_release():
    print("on_key_release")
    #F2_line_numbers.delete("1.0", "end")

    final_index = str(F2_text_editor.index("end-1c"))
    print(f"final_index: {final_index}")

    num_of_lines = final_index.split('.')[0]
    print(f"num_of_lines: {num_of_lines}")

    line_numbers_string = "\n".join(str(no + 1) for no in 
    range(int(num_of_lines)))
    #print(f"line_numbers_string: {line_numbers_string}")

    width = len(str(num_of_lines))
    #print(f"width: {width}")

    F2_line_numbers.configure(state='normal', width=width)
    F2_line_numbers.delete("1.0", "end")
    F2_line_numbers.insert("1.0", line_numbers_string)
    F2_line_numbers.configure(state='disabled')

我需要反转 'event/handler' 优先级的原因是,例如当我在第 1 行并点击 Return 时,该函数在我在线时打印出 'index 1.0 / num of line: 1' 2. 然后我按退格键,当我在第 1 行时它说我在第 2 行。

更新: 我想我会尝试向处理程序函数添加一个等待,但它所做的只是强制事件等待直到处理程序被执行。我正在开发的另一个功能也需要反转 event/handler 优先级,所以我真的希望有人知道如何做到这一点。

我使用线程解决了这个问题。

绑定到小部件的函数包含一个线程到另一个处理行号的函数。现在,当我在第 1 行并按回车键时,它会显示第 2 行。然后我按退格键,它会正常显示第 1 行。线程允许事件在函数之前发生,这正是我想要的。