Select 函数不工作 tkinter 文本
Select function not working tkinter text
我有一个查找功能,它在 selection 部分除外。它 selects 从它找到的短语到结尾。我怎样才能只select我想要的?
def find_helper(text,win=None):
if win: win.destroy()
global box
lengthvar=IntVar()
where=box.search(text,1.0,count=lengthvar)
box.tag_add(SEL, float(where), float(where)+lengthvar.get())
return 'break'
def find(a=None):
global box
ask=Tk()
what=Entry(ask)
confirm=Button(ask,text='Ok',command=lambda:find_helper(what.get(),ask))
what.pack()
confirm.pack()
ask.mainloop()
这是我的输出:
This is some text
(斜体部分是select编辑的部分——从'm'到最后的't')
...但我搜索的东西实际上是'me'。
我究竟做错了什么?!
(试穿 windows 7 python 3.4)
你的问题是这样的:
box.tag_add(SEL, float(where), float(where)+lengthvar.get())
具体来说,问题出在 float
.
的使用上
文本索引是不是浮点数,将索引转换为浮点数是不正确的,会产生意想不到的结果。索引必须是 "line.character" 形式的字符串。
这会有所不同,因为字符串格式的"1.10"
将转换为浮点数 1.1
,这两个数字代表文本小部件中的不同位置。
突出显示所发现内容的正确方法应该是这样的:
box.tag_add(SEL, where, "%s + %dc" % (where, lengthvar.get()))
第二个索引最终会看起来像 "1.10 + 7c"
,tkinter 会将其解释为 "line 1, character 10, plus 7 more characters"。
我有一个查找功能,它在 selection 部分除外。它 selects 从它找到的短语到结尾。我怎样才能只select我想要的?
def find_helper(text,win=None):
if win: win.destroy()
global box
lengthvar=IntVar()
where=box.search(text,1.0,count=lengthvar)
box.tag_add(SEL, float(where), float(where)+lengthvar.get())
return 'break'
def find(a=None):
global box
ask=Tk()
what=Entry(ask)
confirm=Button(ask,text='Ok',command=lambda:find_helper(what.get(),ask))
what.pack()
confirm.pack()
ask.mainloop()
这是我的输出:
This is some text
(斜体部分是select编辑的部分——从'm'到最后的't')
...但我搜索的东西实际上是'me'。 我究竟做错了什么?! (试穿 windows 7 python 3.4)
你的问题是这样的:
box.tag_add(SEL, float(where), float(where)+lengthvar.get())
具体来说,问题出在 float
.
文本索引是不是浮点数,将索引转换为浮点数是不正确的,会产生意想不到的结果。索引必须是 "line.character" 形式的字符串。
这会有所不同,因为字符串格式的"1.10"
将转换为浮点数 1.1
,这两个数字代表文本小部件中的不同位置。
突出显示所发现内容的正确方法应该是这样的:
box.tag_add(SEL, where, "%s + %dc" % (where, lengthvar.get()))
第二个索引最终会看起来像 "1.10 + 7c"
,tkinter 会将其解释为 "line 1, character 10, plus 7 more characters"。