如何解决Tkinter:如何将结束索引更改为空格
因此,我创建了一个文本编辑器,并通过在代码中键入tag_add()
来修复我以前的问题
CODE
#Importing modules
from tkinter import *
#Main Window
Window = Tk()
Window.geometry("400x550")
Window.minsize(400,550)
##Main Script
#Defs
def check_syntax(event=None):
#Tag adds
#Import syntax
text.tag_add("import","1.0","1.6")
#Tag configures
text.tag_configure("import",foreground="yellow")
"""
def check_syntax(event=None):
offset = '+%dc' % len("import")
pos_start = text.search("import",1.0,END)
pos_end = pos_start + offset
text.tag_add('import',pos_start,pos_end)
#text.tag_remove("import",END)
def del_for_check_syntax(event=None):
text.tag_remove("import",END)"""
#Main frame
main = Frame(Window)
#Main text widget
text = Text(main,bd=0,highlightthickness=0,borderwidth=0,bg="#323232",fg="white",font=("Hack Italic",20),undo=True)
#Menu bar
#Mainmenu
mainmenu = Menu(Window)
#Filemenu
filemenu = Menu(mainmenu,tearoff=0)
#Commands
#Filemenu commands
filemenu.add_command(label="New")
#Configs
text.config(width=55,height=35)
main.config(width=55,height=35)
#Tag config for coloring syntax
#text.tag_configure("import",foreground="yellow")
#Highlighting syntax
text.bind("<Return>",check_syntax)
#text.search()
Window.update()
#Binds
#text.bind("<Return>",check_syntax)
text.bind("<Key>",lambda: print("Unsaved"))
#Packs and places
#main.place(anchor="c",rely=.5,relx=.5)
main.pack(expand=True,fill=BOTH,side="right")
text.pack(expand=True,fill=BOTH)
#Update window
Window.update()
#Window.mainloop()
Window.mainloop()
问题
tkinter仅突出显示第1行中的import
,而不突出显示下一行
问题
是否有任何方法可以使结束索引指向空格,我的意思是结束索引位于空格上,因此每次用户在文本小部件中输入import
时,下一行也将突出显示,而不仅仅是一行,然后开始索引文本小部件中的import
在新空间中
编辑
感谢@AST,它起作用了,但是为什么还要突出显示其他语法?,我的意思是“ import”以外的其他词
解决方法
因此,根据我对您的问题的理解,我已经临时编写了代码,请检查并确定这是否是您的要求。
#Importing modules
from tkinter import *
#Main Window
Window = Tk()
Window.geometry("400x550")
Window.minsize(400,550)
##Main Script
#Defs
def check_syntax(event=None):
#Tag adds
#Import syntax
current_line = text.index(INSERT).split(".")[0]
text.tag_add("import",f'{current_line}.0',f'{current_line}.6')
#Tag configures
text.tag_configure("import",foreground="yellow")
"""
def check_syntax(event=None):
offset = '+%dc' % len("import")
pos_start = text.search("import",1.0,END)
pos_end = pos_start + offset
text.tag_add('import',pos_start,pos_end)
#text.tag_remove("import",END)
def del_for_check_syntax(event=None):
text.tag_remove("import",END)"""
#Main frame
main = Frame(Window)
#Main text widget
text = Text(main,bd=0,highlightthickness=0,borderwidth=0,bg="#323232",fg="white",font=("Hack Italic",20),undo=True)
#Menu bar
#Mainmenu
mainmenu = Menu(Window)
#Filemenu
filemenu = Menu(mainmenu,tearoff=0)
#Commands
#Filemenu commands
filemenu.add_command(label="New")
#Configs
text.config(width=55,height=35)
main.config(width=55,height=35)
#Tag config for coloring syntax
#text.tag_configure("import",foreground="yellow")
#Highlighting syntax
text.bind("<space>",check_syntax)
#text.search()
Window.update()
#Binds
#text.bind("<Return>",check_syntax)
text.bind("<Key>",lambda out = "Unsaved": print(out))
#Packs and places
#main.place(anchor="c",rely=.5,relx=.5)
main.pack(expand=True,fill=BOTH,side="right")
text.pack(expand=True,fill=BOTH)
#Update window
Window.update()
#Window.mainloop()
Window.mainloop()
这里,我使用text.index(INSERT)
来获取插入光标在文本小部件中的位置。您可以参考此http://effbot.org/tkinterbook/text.htm#:~:text=Indexes%20are%20used%20to%20point,line%2Fcolumn%20(%E2%80%9Cline.了解更多信息。然后使用f""
将current_line
变量插入字符串,因此,现在根据您所在的行动态更改索引。
另外,您错误地使用了lambda
函数,语法为lambda arguments: expression
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。