gpt4 book ai didi

python - 在文本小部件中标记 - tkinter

转载 作者:太空宇宙 更新时间:2023-11-04 00:53:42 24 4
gpt4 key购买 nike

我在理解如何让标签在我的特定应用程序上工作时遇到一些麻烦,我有一个名为“dwgoutputbox”的文本小部件,它在读取 CSV 文件后显示多个字段

在这个例子中,dwgoutputbox 文本小部件显示了一些字符串变量 descDwg1,descDwg2,descDwg3,它们是第一列中的项目,后面是 'issue ' 其他变量的数字

我试图让第一列中的项目突出显示,以便最终我可以使它们可点击,因为它们将链接到文件。

由于第一列中的项目会发生变化,具体取决于 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)

好的,设法让它按预期工作,这在很大程度上要归功于 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")

我的问题有一半是对更高级的东西似乎没有很多/任何好的“基本”解释,这对使用 Python 一个月的新手来说是一个很好的挑战。不过很享受:)

上面的结果现在给了我 enter image description here

最佳答案

您的代码中至少有两个问题。

首先,您错误地使用了 insert 语句。这是您的代码:

self.outputDesc.insert(INSERT,descPN, END," ", END, descInfo)

insert 命令必须有一个索引作为它的第一个参数,然后是文本作为下一个参数。之后的任何参数交替作为标签和文本。在你的例子中,文本是 descPN 的值,然后是一个名为“end”的标签(END 常量的值),一个空格,“end"m,然后是文本 descInfo

其次,您永远不会配置“结束”标签。但是,您确实配置了一个名为 19 的标记,但您并未将该标记应用于任何文本。您需要将标记与 insert 语句一起使用,或者与 tag_add 语句一起使用。

你需要做两件事来使用标签来突出显示文本小部件中的文本:你必须配置标签以具有你想要的任何属性(颜色、字体等),并且你必须将该标签添加到一系列文本。

您可以使用 tag_configure 配置标签。例如,要有一个名为“red”的标签为文本提供红色背景,您可以这样做:

text_widget.tag_configure("red", background="red")

接下来,您需要将该标签应用于一段文本。有两种方法可以做到这一点。首先,您可以在插入文本时将标签应用于文本,方法是将标签作为参数添加到 insert 命令中:

text_widget.insert('end", "this text is red", "red")

第二种方法是将标签应用于一个范围。例如,要使第二行变为红色,您可以这样做:

text_widget.tag_add("red", "2.0", "2.0 lineend")

关于python - 在文本小部件中标记 - tkinter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35977238/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com