2016-03-13 39 views
2

我遇到一些麻煩了解如何獲取代碼,以便在我的特定應用的工作,我有什麼是所謂的「dwgoutputbox」一文中的小工具,讀取一個CSV文件後,會顯示多個字段標記的文本組件 - Tkinter的

在這種情況下,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) 

好,管理讓它按預期工作,很大程度上是由於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

+0

請顯示一些代碼,說明你已經嘗試過。突出顯示文本是有據可查的,並且在stackoverflow和其他網站上有很多例子。 –

+0

嗨,布賴恩,更新,包括一些代碼,目前我正試圖讓它的工作,所以它最可能非常粗糙 – LesM76

回答

3

有在你的代碼至少有兩個問題。

首先,您使用的INSERT語句不正確。這是你的代碼:

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

insert命令必須有一個索引作爲其第一個參數,然後文本作爲一個參數。之後的任何參數替代爲標籤和文本。在你的情況下,文本是descPN的值,然後一個名爲「結束」(該END常量的值)標籤,一個空間裏,「結束」米標記,然後將文本descInfo

其次,你從來沒有配置標籤「結束」。不過,您可以配置名爲19的標籤,但您並未將該標籤應用於任何文本。你需要要麼使用標籤與insert聲明,或與tag_add聲明。

您需要做兩件事來使用標籤來突出顯示文本小部件中的文本:您必須配置一個標籤以擁有您想要的任何屬性(顏色,字體等),並且您必須將該標籤添加到範圍的文字。

您可以配置一個標籤與tag_configure。例如,有一個名爲「紅」的標籤,讓文本紅色背景,你會做這樣的事情:

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") 
+0

我試圖通過第一次獲得適當的文本突出顯示之前任何行動,但沒有意識到需要額外的步驟。感謝您指出它,不幸的是,我已經找到的例子似乎過於用戶友好的解釋如何工作:) – LesM76

+0

@ LesM76:嘗試讀這:http://www.tkdocs.com/tutorial/text .html#tags和http://stackoverflow.com/q/14786507/7432以及http://stackoverflow.com/q/3781670/7432等等。 –

+0

謝謝Bryan – LesM76