你知道在Tkinter中,你可以做这样的事情:
self.scrolled_text.replace("insert-1c", INSERT, myText);
它会用myText替换当前位置左边的字符吗?
那么,你可以用什么来代替" insert-1c"记录?
我知道-1c意味着减去一个角色。你可以做-2c表示减2,或+ 5c表示加5个字符。我只知道这是因为我在Google上花了一些时间后检查了某人的代码(不是因为我找到了文档)。
还有更多要知道,或者是它?无论如何,我喜欢能够在不进行搜索和查找空白的情况下用文字代替字符。对于像这样的东西,他们应该有一个文档维基。
ScrolledText.get(index1, index2)
非常重要。 ScrolledText.index(INSERT)
将返回INSERT的行和列,正如Bryan Oakley在他的回答中用不同的词语说的那样(例如,对于第1行,第0列或文件的开头,"1.0"
)。
EDIT2:ScrolledText.compare(index1, "==", index2)
用于比较的代码较少,正如人们可能想象的那样。我当时并不知道这件事。
这里是我编写的用于模拟控制退格和控制删除功能的代码。
控制删除(self.cur_scroll()
是我的ScrolledText小部件; " "
包含空格和不间断空格):
insert=self.cur_scroll().get(INSERT);
if insert in " " and insert!="":
while insert in " " and insert!="":
self.cur_scroll().delete(INSERT);
insert=self.cur_scroll().get(INSERT);
elif insert not in "\n\t .?!,@#…¿/\\\"'—–":
while insert not in "\n\t .?!,@#…¿/\\\"'—–":
self.cur_scroll().delete(INSERT);
insert=self.cur_scroll().get(INSERT);
if insert in " ":
while insert in " " and insert!="":
self.cur_scroll().delete(INSERT);
insert=self.cur_scroll().get(INSERT);
else:
if insert in "\n\t" and insert!="":
if self.cur_scroll().get(INSERT, END).strip()=="" and self.cur_scroll().index(INSERT)!=self.cur_scroll().index(END):
self.cur_scroll().delete(INSERT, END);
else:
while insert in "\n\t " and insert!="":
self.cur_scroll().delete(INSERT);
insert=self.cur_scroll().get(INSERT);
else:
self.cur_scroll().delete(INSERT);
控制-退格:
if self.cur_scroll().index("insert-1c")!="1.0" and self.cur_scroll().index(INSERT)!="1.0":
if self.cur_scroll().index("insert wordstart-1c")=="1.0":
i=0;
while self.cur_scroll().index(INSERT)!="1.0" and i<25:
self.cur_scroll().delete("insert-1c");
i+=1;
else:
insertm1c=self.cur_scroll().get("insert-1c");
if insertm1c in "\n\t.?!,@#…¿/\\\"'—–" and insertm1c!="":
i=0;
while (insertm1c in "\n\t.?!,@#…¿/\\\"'—–" and insertm1c!="") and i<25:
self.cur_scroll().delete("insert-1c");
insertm1c=self.cur_scroll().get("insert-1c");
i+=1;
else:
while insertm1c not in "\n\t .?!,@#…¿/\\\"'—–" and insertm1c!="":
self.cur_scroll().delete("insert-1c");
insertm1c=self.cur_scroll().get("insert-1c");
while insertm1c in " " and insertm1c!="":
self.cur_scroll().delete("insert-1c");
insertm1c=self.cur_scroll().get("insert-1c");
答案 0 :(得分:3)
请参阅此页面的“索引”部分:http://effbot.org/tkinterbook/text.htm。最终文档在此处:http://tcl.tk/man/tcl8.5/TkCmd/text.htm#M7
简短的回答是,您可以添加"line.char"
形式的任何索引和特殊值"end"
。您可以使用-1c
(“减去一个字符”)和"wordend"
以及其他几个内容来修改这些内容。您还可以使用标记,例如名为"insert"
的内置标记。
答案 1 :(得分:1)
总会有更多。
您可以查看此处列出的参考资料: https://stackoverflow.com/tags/tkinter/info
这是官方文字文档: http://www.tcl.tk/man/tcl8.5/TkCmd/text.htm
要回答关于整个单词的问题,请考虑以下示例:
def replace(): # deletes whole word where insert
text.delete('insert wordstart', 'insert wordend') # cursor is found
root=Tk()
text = Text(root)
text.pack()
text.insert(END, 'Hello world')
Button(root, text='Delete word', command=replace).pack()
root.mainloop()