Les*_*M76 4 python tags tkinter python-3.x
我在理解如何让标签在我的特定应用程序上工作时遇到了一些困难,我有一个名为“dwgoutputbox”的文本小部件,它在读取 CSV 文件后显示多个字段
在本例中,dwgoutputbox文本小部件显示许多字符串变量descDwg1,descDwg2,descDwg3,它们是第一列中的项目,后跟“问题”编号,它们是其他变量
我试图让第一列中的项目突出显示,以便最终我可以使它们可单击,因为它们将链接到文件。
由于第一列中的项目会发生变化,具体取决于 CSV 搜索(但仍保持以下通用格式),我不确定如何让 tag_config 工作
self.outputQty.insert(INSERT,descQty)
self.outputDesc.insert(INSERT,descPN, END," ", END, descInfo)
self.dwgoutputbox.insert(INSERT, descDwg1, END, " ", END, " Issue: ",END,descIss1,END, "\n")
self.dwgoutputbox.insert(INSERT, descDwg2, END, " ", END, " Issue: ",END,descIss2,END, "\n")
self.dwgoutputbox.insert(INSERT, descDwg3, END, " ", END, " Issue: ",END,descIss3,END, "\n")
format_link()
def format_link(dwgoutputbox,tag,apply_tag):
self.dwgoutputbox.tag_config(tagName="19",foreground="blue",underline=1)
dwgoutputbox.tag_bind(tag,"<Button-1>",apply_tag)
Run Code Online (Sandbox Code Playgroud)
好的,成功使其按预期工作,这主要归功于 Bryan Oakley 的帮助和耐心 - 谢谢您,非常感谢。
self.dwgoutputbox = Text(root, borderwidth=0, width=50, height=15, foreground="#ffffff",background="#3F3F3F", font="system_font 10")
self.dwgoutputbox.grid(row=3, column=2, columnspan=5, padx=2, pady=3)
self.dwgoutputbox.tag_config("dwg",foreground="lightblue")
self.dwgoutputbox.insert(1.0, descDwg3, "dwg", " Issue: ", "", descIss3, "", "\n")
self.dwgoutputbox.insert(1.0, descDwg2, "dwg", " Issue: ", "", descIss2, "", "\n")
self.dwgoutputbox.insert(1.0, descDwg1, "dwg", " Issue: ", "", descIss1, "", "\n")
Run Code Online (Sandbox Code Playgroud)
我的一半问题是,对于更高级的东西,似乎没有很多/任何好的“基本”解释,这对玩了一个月的 python 的新手来说是一个很好的挑战。不过很享受:)
您的代码中至少存在两个问题。
首先,您错误地使用了插入语句。这是你的代码:
self.outputDesc.insert(INSERT,descPN, END," ", END, descInfo)
Run Code Online (Sandbox Code Playgroud)
该insert命令必须将索引作为其第一个参数,然后将文本作为下一个参数。之后的任何参数都交替作为标签和文本。在您的例子中,文本是 的值descPN,然后是一个名为“end”的标签(常量的值END)、一个空格、“end”m 的标签,然后是文本descInfo。
其次,你永远不会配置标签“end”。但是,您配置了一个名为 的标签19,但并未将该标签应用于任何文本。您需要将标签与insert语句一起使用,或者与tag_add语句一起使用。
使用标签突出显示文本小部件中的文本需要做两件事:必须将标签配置为具有所需的任何属性(颜色、字体等),并且必须将该标签添加到文本范围。
您可以使用 来配置标签tag_configure。例如,要使用名为“red”的标签为文本提供红色背景,您可以执行以下操作:
text_widget.tag_configure("red", background="red")
Run Code Online (Sandbox Code Playgroud)
接下来,您需要将该标签应用于一系列文本。有两种方法可以做到这一点。首先,您可以在插入文本时将标记应用到文本,方法是将标记作为参数包含到命令中insert:
text_widget.insert('end", "this text is red", "red")
Run Code Online (Sandbox Code Playgroud)
第二种方法是将标签应用于范围。例如,要将第二行设置为红色,您可以这样做:
text_widget.tag_add("red", "2.0", "2.0 lineend")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6974 次 |
| 最近记录: |