Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.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中更改单词的定义?_Python_Tkinter - Fatal编程技术网

在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提供一些见解/想法,听起来非常有用。非常感谢。