簡體   English   中英

標記文本小部件-Tkinter

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM