gpt4 book ai didi

python - 无法使用 mark_set 小部件功能移动文本 'insert' 索引(Python 和 Tkinter)

转载 作者:太空宇宙 更新时间:2023-11-03 18:21:09 24 4
gpt4 key购买 nike

我一直在尝试强制“插入”标记移动到文本字段的开头,无论用户在该字段上单击什么位置。虽然我发现this post ,它似乎在我的代码中不起作用。光标/插入只是停留在我单击的索引处(注意:函数的其余部分工作正常)。作为最后一个想法,我尝试“返回'break'”,以防正在运行一些进一步的函数来“恢复”光标位置,但这没有什么区别。我正在使用 Python 3.4 和 Tkinter 8+。谢谢!!

...
n = ttk.Notebook(p)
n1 = Text(n,width=60,height=15);
...
def EnterStatement(e):
i=n1.index('current').split('.')
n1.tag_remove('NewStatement', i[0]+'.0', i[0]+'.0 lineend')
n1.replace(i[0]+'.16', i[0]+'.46', ' '*30,'flex')
#the following doesn't work... why?!
n1.mark_set('insert', i[0]+'.16')
...
n1.tag_bind("NewStatement",'<1>', EnterStatement)

最佳答案

我认为您应该将文本绑定(bind)到 <ButtonRelease-1>事件,而不是<1><Button-1> 。在这个简单的测试示例中,绑定(bind)到 <Button-1>不会移动鼠标光标。但是,如果您绑定(bind)到 <ButtonRelease-1> ,每次单击鼠标光标都会移动到开头。

from tkinter import *


root = Tk()
text = Text(root)
text.insert(INSERT, "Some example text.\n Some second line of example text")

def onclick(event):
#print(event)
event.widget.mark_set(INSERT, '1.0')

text.bind('<ButtonRelease-1>', onclick)
#text.bind('<Button-1>', onclick)

text.pack()


root.mainloop()

我猜原因是Tkinter在绑定(bind)到<Button-1>后将光标设置在点击位置被执行,绑定(bind)到 <ButtonRelease-1> 时则不然。希望这会有所帮助。

关于python - 无法使用 mark_set 小部件功能移动文本 'insert' 索引(Python 和 Tkinter),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24113946/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com