双击Text-widget中的单词时,将选择单击的单词。然而,Tkinter对单词是什么的理解对于我的用例来说是不切实际的。
艾芬特解释了Tkinter认为是一个词,但没有解释如何改变这个词。是否有可能改变Tkinter对一个单词的定义,使它将连字符识别为单词的一部分?也就是说,我想通过双击选择一个文本,比如--help、--version或-U。
发布于 2017-04-01 21:18:27
在答案中,curtisk提供了到Bryan的链接,指出这是不可能的:
您不能修改"wordstart“如何定义”word“。
但是基于他的回答,我开发了下面的方法select_current_word,代码只是为了说明它的用法。
import Tkinter as tk
class MyText(tk.Text):
def __init__(self, **kw):
tk.Text.__init__(self, **kw)
self.bind('<Double-Button-1>', self.select_current_word)
def select_current_word(self, event):
i0 = self.search(r'[-\w]+', tk.CURRENT+'+1c', backwards=True, regexp=True)
i1 = self.search(r'[^-\w]+', i0, forwards=True, regexp=True)
self.tag_remove(tk.SEL, '1.0', tk.END)
self.tag_add(tk.SEL, i0, i1)
self.update()
return 'break'
if __name__=='__main__':
t = MyText()
t.pack(expand=True, fill=tk.BOTH)
t.insert('1.0', """
Options:
General Options:
-h, --help Print this help text and exit
--version Print program version and exit
-U, --update Update this program to latest version.
""".strip())
t.mainloop()https://stackoverflow.com/questions/43160936
复制相似问题