在文本小部件中双击时定义选择的字符

时间:2015-01-25 04:41:40

标签: python tkinter

在Windows上,双击“文本”小部件中的单词也会选择连接的标点符号 有没有办法定义你想要选择的字符?

1 个答案:

答案 0 :(得分:1)

  

<强> tcl_wordchars
      此变量的值是一个正则表达式,可以设置为控制所考虑的内容&#34; word&#34;字符,例如   通过双击Tk中的文本来选择单词。这是平台   依赖。在Windows上,它默认为\ S,表示除了a之外的任何内容   Unicode空格字符。否则默认为\ w,即任意   Unicode字符(数字,字母或下划线)。

这是Python 3.4的一个例子:

import tkinter

class Creator(object):

    def __init__(self):

        root = self.root = tkinter.Tk()

        # Main Frame
        f_main = tkinter.Frame(root, borderwidth=6, relief='flat')
        f_main.grid(row=0, column=0, sticky='nsew')

        # Text widget and frame
        f_txt = tkinter.Frame(f_main, borderwidth=2, relief="sunken")
        f_txt.config(width=768, height=768)
        f_txt.pack(padx=4, pady=4, side="bottom", fill="both", expand=True)

        my_txt = self.text = tkinter.Text(f_txt)
        my_txt.config(undo=True, wrap='word')
        my_txt.grid(row=0, column=0, sticky="nsew")
        my_txt.focus_set()

GUI = Creator()
GUI.root.tk.eval("catch {tcl_endOfWord}")
GUI.root.tk.eval("catch {tcl_startOfPreviousWord}")
GUI.root.tk.eval("set tcl_wordchars {[[:alnum:]']}")
GUI.root.tk.eval("set tcl_nonwordchars {[^[:alnum:]']}")
GUI.root.mainloop()

来自http://wiki.tcl.tk/1655的说明:

  

...要更改有效的字符,您必须先做   类似的东西:

     

抓住{tcl_endOfWord}

可以在此处研究正则表达式语法:https://www.tcl.tk/man/tcl8.6/TclCmd/re_syntax.htm