在Python Tkinter中更改单词的定义?
双击在Python Tkinter中更改单词的定义?,python,tkinter,Python,Tkinter,双击文本-小部件中的单词时,会选中单击的单词。然而,对于我的用例来说,Tkinter对单词的理解是不切实际的 解释Tkinter认为什么是一个词,而不是如何改变它。有没有可能改变Tkinter对一个单词的定义,使其能够识别连字符作为单词的一部分?也就是说,我想双击选择一个文本,如--help或--version或-U。因为curtisk提供了指向Bryan Oakley的链接,他说这是不可能的: 您不能修改“wordstart”定义“单词”的方式 但根据他的回答,我开发了以下方法选择当前单词,代
文本
-小部件中的单词时,会选中单击的单词。然而,对于我的用例来说,Tkinter对单词的理解是不切实际的
解释Tkinter认为什么是一个词,而不是如何改变它。有没有可能改变Tkinter对一个单词的定义,使其能够识别连字符作为单词的一部分?也就是说,我想双击选择一个文本,如--help
或--version
或-U
。因为curtisk提供了指向Bryan Oakley的链接,他说这是不可能的:
您不能修改“wordstart”定义“单词”的方式
但根据他的回答,我开发了以下方法选择当前单词,代码只是为了说明它的用法
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()
将Tkinter作为tk导入
类MyText(tk.Text):
def初始功率(自身功率,**kw):
tk.Text.\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
self.bind(“”,self.select\u current\u word)
def选择当前单词(自身、事件):
i0=self.search(r'[-\w]+',tk.CURRENT+'+1c',backwards=True,regexp=True)
i1=self.search(r'[^-\w]+',i0,forwards=True,regexp=True)
自标记移除(tk.SEL,'1.0',tk.END)
self.tag_add(tk.SEL,i0,i1)
self.update()
返回“中断”
如果“名称”=“\uuuuuuuu主要”:
t=MyText()
t、 打包(扩展=真,填充=tk.BOTH)
t、 插入('1.0',“”)
选项:
一般选择:
-h、 --帮助打印此帮助文本并退出
--版本打印程序版本并退出
-U、 --将此程序更新为最新版本。
“.strip())
t、 mainloop()
这个问题可能会为您@Curtik提供一些见解/想法,听起来非常有用。非常感谢。