2016-08-21 83 views
6

我正在使用ttk treeviews構建Python GUI應用程序。在Linux上,當Treeitem具有子項時,它會顯示一個箭頭以顯示該行可以展開。我想隱藏這個指標箭頭(我使用其他方式來暗示該行可以展開)。我怎樣才能做到這一點?如何在Python GUI中隱藏ttk Treeitem指標

如果我運行Style().element_names(),我看到有一個Treeview元素和一個Treeitem.indicator元素。如果我運行Style().configure("Treeview", padding=50),我會在創建樹視圖時看到應用填充樣式,所以我確信任何可以正確應用於Treeitem.indicator的樣式都應該可見。

運行Style().element_options("Treeitem.indicator"),我看到('-foreground', '-indicatorsize', '-indicatormargins')。運行Style().lookup("Treeitem.indicator", "foreground")給了我"#000000",所以看起來值初始化了。如果我嘗試Style().configure("Treeview", foreground="#123456")我沒有看到指示箭頭改變顏色,但運行Style.lookup("Treeitem.indicator", "foreground")顯示我如預期的"#123456"。我的計劃是將指標設置爲0以使箭頭完全消失,但我甚至無法成功編輯顏色。我在這裏做錯了什麼,是否有更好的方法來隱藏指標?萬一它很重要,我正在運行Python 3.5.0。

回答

3

不知道你是否想過它。

創建新樣式並對其進行配置時,必須將模板的名稱更改爲"."。這改變了treeview的根風格。您還需要指定一個主題,即使它是default。所以它看起來像這樣:

s = ttk.Style() 
s.configure(".", indicatorsize = '0') 
s.theme_use('default') 

然後當你創建樹視圖時,你不應該指定一個樣式。

讓我知道這是否適合你。

編輯:由於這是正在downvoted因爲某些原因,我會澄清:

代碼的風格部分註釋掉:

#s = ttk.Style() 
    #s.configure(".", indicatorsize = '0') 
    #s.theme_use('clam') 

    j = ttk.Treeview(self.parent) 
    j.place(relx = 0.5, rely = 0.5, anchor = "center") 
    j.insert("",1,"jacob",text = "Jacob") 
    j.insert("jacob",1,"marcus",text = "Marcus") 
    j.insert("jacob",2,"tony",text = "Tony") 
    j.insert("jacob",3,"ricardo",text = "Ricardo") 

給我們

enter image description hereenter image description here

帶有款式部分的代碼

s = ttk.Style() 
s.configure(".", indicatorsize = '0') 
s.theme_use('clam') 

j = ttk.Treeview(self.parent) 
j.place(relx = 0.5, rely = 0.5, anchor = "center") 
j.insert("",1,"jacob",text = "Jacob") 
j.insert("jacob",1,"marcus",text = "Marcus") 
j.insert("jacob",2,"tony",text = "Tony") 
j.insert("jacob",3,"ricardo",text = "Ricardo") 

enter image description hereenter image description here

希望這有助於。

編輯2: 添加了s.theme_use('clam')行,因爲您需要指定您正在使用哪個主題。它也適用於classicdefault,但由於某種原因不適用於vista主題。

+0

不知道爲什麼這是downvoted。我使用這段代碼,並設法使指標在我的測試樹視圖中完全消失。 – RBuntu

+0

因爲我在Windows上試過你的代碼,所以沒有按預期工作,這是我壓低了你的因素。無論如何,現在你已經證明它可以在linux上運行我會讓你讚不絕口 – BPL

+0

@BPL這不是Linux,我在Windows 7上運行代碼。我不完全確定爲什麼它不適合你。我做了一些更多的動作,看起來你必須指定要使用的主題,然後才能更改指標大小。它似乎與's.theme_use('default')',以及其他主題,如經典和蛤蜊。但是,它似乎不適用於Vista主題。 – RBuntu