Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Tkinter Text:用双击选择的单词调用自定义函数_Python_Tkinter_Callback_Text Widget - Fatal编程技术网

Python Tkinter Text:用双击选择的单词调用自定义函数

Python Tkinter Text:用双击选择的单词调用自定义函数,python,tkinter,callback,text-widget,Python,Tkinter,Callback,Text Widget,当用户双击文本小部件中的一个单词时,会调用一些内部回调,从而选择一个单词。我想在那个词上做些额外的工作。我该怎么做?天真的想法是将我自己的回调绑定到双击。它没有工作,因为优先级错误:我的回调是在选择单词之前首先执行的,而文本回调是在选择单词之后调用的。 我怎样才能解决这个问题 一个想法是检索现有回调的句柄,并在以下情况下重用它: actual_callback = **<how can I get this handle?>** text.bind("<Double-B

当用户双击文本小部件中的一个单词时,会调用一些内部回调,从而选择一个单词。我想在那个词上做些额外的工作。我该怎么做?天真的想法是将我自己的回调绑定到双击。它没有工作,因为优先级错误:我的回调是在选择单词之前首先执行的,而文本回调是在选择单词之后调用的。 我怎样才能解决这个问题

一个想法是检索现有回调的句柄,并在以下情况下重用它:

actual_callback = **<how can I get this handle?>**    
text.bind("<Double-Button-1>", my_callback)

请以这种方式帮助完成它,或者可以提出一种更好的方法来实现我的原始目标。

简单的答案是在运行回调之前等待一个节拍

text.bind("<Double-Button-1>", lambda e: text.after(2, my_callback, e)) # wait 2 ms before running callback
text.bind(“,lambda e:text.after(2,my_callback,e))35;在运行callback之前等待2毫秒

简单的答案是在运行回调之前只需等待一拍

text.bind("<Double-Button-1>", lambda e: text.after(2, my_callback, e)) # wait 2 ms before running callback
text.bind(“,lambda e:text.after(2,my_callback,e))35;在运行callback之前等待2毫秒

Wow。我印象深刻。我不知道这篇课文的后处理方法。它工作得非常完美。谢谢。我想
文本。在(0,我的_回调,e)
之后也可以。它应该在当前单击事件完成后将回调分配给下一个事件。我还认为您可能有输入错误:
wait a beat
@quickbug
after()
方法是您在tkinter中执行任何定时操作的方式,因为
wait()
sleep()
将导致整个程序冻结,而不仅仅是提供一个定时事件。感谢您的提示。顺便说一句,我改变了帖子的标题,以反映小说给出的解决方案。希望它能帮助其他同样需要重定向到这篇文章的人。@quickbug所有tkinter小部件都有一个
后的
方法。哇。我印象深刻。我不知道这篇课文的后处理方法。它工作得非常完美。谢谢。我想
文本。在(0,我的_回调,e)
之后也可以。它应该在当前单击事件完成后将回调分配给下一个事件。我还认为您可能有输入错误:
wait a beat
@quickbug
after()
方法是您在tkinter中执行任何定时操作的方式,因为
wait()
sleep()
将导致整个程序冻结,而不仅仅是提供一个定时事件。感谢您的提示。顺便说一句,我改变了帖子的标题,以反映小说给出的解决方案。希望它能帮助其他同样需要重定向到这篇文章的人。@quickbug所有tkinter小部件都有一个
after
方法。