我有一个文本控件,里面有文本,它带有'\n'
字符。文本由行分隔。我尝试使用搜索方法在文本小部件中找到子字符串的开始位置。然后我有一个(2,10)的职位。之后,我计算了子字符串的长度(18),并通过将长度添加到开始位置来找出结束位置,得到了类似2.28的值。
但是,如果子字符串中有'\n'
符号,则位置错误。例如,如果'\n'
符号位于2.15位置,则小部件中子字符串的结尾应为3.13。
有没有办法在多行文本小部件中找到结束位置?我可以使用搜索方法吗?我该怎么办?
答案 0 :(得分:0)
这是您可能希望对每一行进行计数的一种方法。该方法将逐行计数每一行,总计数减去\n
。
下面的函数将检查每行并计数。打印该行的结果,然后将这些结果添加到计数器中。最后,完成循环后,它将打印总计数。我还添加了一条打印语句,该语句将为文本框中的每一行提供最后一个字符的索引。
import tkinter as tk
root = tk.Tk()
root.geometry("250x100")
txt = tk.Text(root, height=4, width=30)
txt.pack()
def string_count():
global txt
counter = 0
for ndex, line in enumerate(txt.get(1.0, "end-1c").splitlines()):
counter += len(line)
print("Count on Line {} is: {}".format(ndex + 1, len(line)))
print("The index for the last character in this line is {}.{}".format(ndex + 1, len(line)))
print("String count in text box is: {}".format(counter))
tk.Button(root, text="Get string count", command=string_count).pack()
root.mainloop()
结果:
答案 1 :(得分:0)
如果您有一个索引要查找距离N个字符的新索引,则可以使用[[56 12 4]
[ 1 21 3]
[ 5 4 2]]
方法以及文本小部件的扩展语法(例如:“ line.character + n chars”) )
这是一个可行的示例:
index