在Python Tkinter中更改单词的定义?

时间:2017-04-01 19:12:14

标签: python tkinter

双击<%= link_to "Sign In", new_user_session_path, class: "button", rel: "modal:open" %> - 窗口小部件中的单词时,会选择单击的单词。然而,Tkinter对单词的理解对我的用例来说是不切实际的。

Effbot解释了Tkinter认为是一个词而不是如何改变它。是否有可能改变Tkinter对单词的定义,以便将连字符识别为单词的一部分?即我想通过双击选择Text--help--version这样的文字。

1 个答案:

答案 0 :(得分:0)

the answer中,curtisk提供了一个指向Bryan Oakley的链接,声明这是不可能的:

  

您无法修改&#34; wordstart&#34;定义&#34;单词&#34;。

但根据他的回答,我开发了以下方法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()