当前位置: 首页 > 知识库问答 >
问题:

Tkinter:如何将结束索引更改为空格

澹台宾白
2023-03-14

因此,我制作了一个文本编辑器,并通过在我的代码中键入tag\u add()来修复我以前的问题

#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", 1.0, END)

def del_for_check_syntax(event=None):
    text.tag_remove("import", 1.0, 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在新空格中开始索引

编辑
谢谢@AST,它起作用了,但是为什么其他语法也突出显示了呢?,我指的是“进口”以外的词

共有1个答案

陶超
2023-03-14

所以,根据我对你问题的理解,我已经临时编写了代码,请检查并告诉我这是否是你的要求。

#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", 1.0, END)

def del_for_check_syntax(event=None):
    text.tag_remove("import", 1.0, 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()

这里我使用了文本。索引(插入)以获取插入光标在文本小部件中的位置。你可以参考这个http://effbot.org/tkinterbook/text.htm#:~:text=索引用于点、线/列(“线”。了解更多信息。然后使用f“”当前\u行变量插入字符串,因此,现在索引会根据您所在的行进行动态更改。此外,您错误地使用了lambda函数,语法为lambda arguments:expression

 类似资料:
  • 问题内容: 我想将表列更改为可为空。我用过了: 这会导致出现错误。正确的语法是什么? 问题答案: 假设(基于您之前的问题): 用您的实际数据类型替换。

  • 问题内容: 我需要状态从改变到的,当一些事件发生。 这是我的按钮的当前状态,当前已禁用: Anyonne可以帮助我该怎么做吗? 问题答案: 您只需将您按钮的设置为: 要么 此代码将在事件的回调中使用,该事件将导致Button启用。 另外,正确的代码应为: 该方法的回报,且将其分配给。您实际上想要将返回值分配给,然后在下面的行中使用。

  • 问题内容: 我正在使用来更新旧的应用,并且当没有广告时,它会滑出屏幕。出现广告时,它会在屏幕上滑动。基本的东西。 旧样式,我将帧设置在动画块中。新样式,我对自动布局约束有一个确定Y位置,在这种情况下,它是距父视图底部的距离,并修改常量: 横幅完全按预期移动,但没有动画。 更新:我重新观看了WWDC 12讲的“掌握自动布局的最佳实践” ,其中涵盖了动画。它讨论了如何使用CoreAnimation更新

  • 问题内容: 自几个月前以来,我的集群每天都有一个索引,每个索引有5个分片(默认),并且由于分片太多(超过1000个),我无法在整个集群上运行查询。 文档ID是自动生成的。 如何将索引合并为一个索引,处理有冲突的ID(甚至可能发生冲突)并更改类型? 我正在使用ES版本5.2.1 问题答案: 仅在使用ELK堆栈几个月并逐日创建索引后才可见的常见问题。这里有一些选项可以解决性能问题。 首先,您可以用来限

  • 问题内容: 如何使用T-SQL更改表中的一个属性以允许为null(不为null-> null)?也许更改表? 问题答案:

  • 问题内容: 根据以下我用于常规mysql的代码,如何将其转换为使用mysqli? 像更改为一样简单吗? 问题答案: 首先要做的可能是将每个函数调用都替换为等效函数,至少在您愿意使用过程式API的情况下-考虑到您已经有一些基于MySQL API的代码,这将是更简单的方法是一种程序性的。 为了解决这个问题,“ MySQLi扩展功能摘要” 绝对是有用的。 例如: 将被替换 将被替换为和/或,具体取决于上