Python 选择“功能不工作”tkinter text

Python 选择“功能不工作”tkinter text,python,text,tkinter,Python,Text,Tkinter,我有一个查找功能,除了选择部分外,该功能可以正常工作。它从找到的短语中选择到结尾。我如何让它只选择我想要的 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)+lengt

我有一个查找功能,除了选择部分外,该功能可以正常工作。它从找到的短语中选择到结尾。我如何让它只选择我想要的

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()
这是我的输出:

这是一些文本

(斜体部分为所选部分-从“m”到最后一个“t”)

…但我找的东西实际上是“我”。 我做错了什么?! (在windows 7 python 3.4上试用过)

您的问题是:

box.tag_add(SEL, float(where), float(where)+lengthvar.get())
具体来说,问题在于使用
浮点

文本索引不是浮点数,将索引转换为浮点数是不正确的,并且会产生意外的结果。索引必须是“line.character”格式的字符串

这会产生不同,因为字符串格式的
“1.10”
将转换为浮点形式的
1.1
,这两个数字表示文本小部件中的不同位置

突出显示所发现内容的正确方法如下:

box.tag_add(SEL, where, "%s + %dc" % (where, lengthvar.get()))

第二个索引最后看起来像是
“1.10+7c”
,tkinter会将其设置为“第1行,10个字符,再加上7个字符”

什么是
box。search
box是我的小部件,search是它的find方法。谢谢,这真的很有帮助。