![](/img/trans.png)
[英]Tagging Whole Word Based on the First Character in a Tkinter Text Widget
[英]Tagging in a text widget - tkinter
我在理解如何使標記在我的特定應用程序上工作時遇到一些麻煩,我所擁有的是一個名為“ 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帶來了很好的挑戰。 享受它雖然:)
您的代碼中至少有兩個問題。
首先,您錯誤地使用了插入語句。 這是您的代碼:
self.outputDesc.insert(INSERT,descPN, END," ", END, descInfo)
insert
命令必須將索引作為第一個參數,然后將文本作為下一個參數。 之后的所有參數都將作為標簽和文本交替顯示。 在您的情況下,文本是descPN
的值,然后是一個名為“ end”的標簽( END
常量的值),一個空格,一個“ end” m的標簽,然后是文本descInfo
。
其次,您永遠不要配置標簽“ end”。 但是,您確實配置了一個名為19
的標簽,但尚未將該標簽應用於任何文本。 您需要將標記與insert
語句一起使用,或者與tag_add
語句一起使用。
使用標簽在文本小部件中突出顯示文本時,需要做兩件事:必須配置標簽以具有所需的任何屬性(顏色,字體等),並且必須將該標簽添加到文本范圍內。
您可以使用tag_configure
配置標簽。 例如,要使一個名為“ red”的標簽為文本賦予紅色背景,您可以執行以下操作:
text_widget.tag_configure("red", background="red")
接下來,您需要將該標簽應用於一系列文本。 有兩種方法可以做到這一點。 首先,可以通過將標簽作為參數insert
命令來在insert
標簽時將標簽應用於文本:
text_widget.insert('end", "this text is red", "red")
第二種方法是將標簽應用於范圍。 例如,要使第二行變為紅色,您可以這樣操作:
text_widget.tag_add("red", "2.0", "2.0 lineend")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.