选择功能不工作tkinter文本

时间:2015-01-28 18:09:05

标签: 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)+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()

这是我的输出:

  

这是 me text

(斜体部分是选定部分 - 从' m'到最后' t')

...但我搜索的东西实际上是“我”#39; 我究竟做错了什么?! (在Windows 7 python 3.4上试过)

1 个答案:

答案 0 :(得分:0)

你的问题是:

box.tag_add(SEL, float(where), float(where)+lengthvar.get())

具体来说,问题在于使用float

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

这有所不同,因为字符串格式的"1.10"将作为float转换为1.1,这两个数字代表文本小部件中的不同位置。

突出显示内容的正确方法是这样的:

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

第二个索引最终会看起来像"1.10 + 7c",其中tkinter将解释为"第1行,第10个字符,再加上7个字符"。