2016-08-21 23 views
6

Buduję aplikację GUI Python przy użyciu tdk treeviews. W systemie Linux, gdy Treeitem zawiera elementy podrzędne, wyświetla strzałkę wskazującą, że wiersz można rozwinąć. Chcę ukryć tę strzałkę wskaźnika (używam innych sposobów, aby wskazać, że wiersz można rozwinąć). Jak mogę to zrobić?Jak ukryć wskaźniki ttk Treeitem w GUI Python

Po uruchomieniu Style().element_names() widzę element Treeview i element Treeitem.indicator. Jeśli uruchomię Style().configure("Treeview", padding=50), widzę, że styl dopełnienia zostaje zastosowany podczas tworzenia widoku drzewa, więc jestem przekonany, że każdy styl poprawnie zastosowany do Treeitem.indicator powinien być również widoczny.

Uruchamianie Style().element_options("Treeitem.indicator"), widzę ('-foreground', '-indicatorsize', '-indicatormargins'). Uruchomienie Style().lookup("Treeitem.indicator", "foreground") daje mi "#000000", więc wydaje się, że wartość jest zainicjalizowana. Jeśli spróbuję, Style().configure("Treeview", foreground="#123456"), nie widzę, aby strzałka wskaźnika zmieniała kolor, chociaż uruchomienie Style.lookup("Treeitem.indicator", "foreground") pokazuje mi zgodnie z oczekiwaniami "#123456". Moim planem było ustawienie wskaźników na 0, aby strzałka zniknęła całkowicie, ale nie mogę nawet z powodzeniem edytować koloru. Co robię źle tutaj i czy istnieje lepszy sposób na ukrycie wskaźnika? Jeśli to ma znaczenie, używam Pythona 3.5.0.

Odpowiedz

3

Nie jestem pewien, czy kiedykolwiek to rozgryzłeś.

Po utworzeniu nowego stylu i skonfigurowaniu go należy zmienić nazwę szablonu na ".". Zmienia to styl główny dla widoku drzewa. Musisz również określić motyw, nawet jeśli jest to default. Wyglądałoby to tak:

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

Następnie, gdy tworzysz widok drzewa, nie powinieneś w ogóle określać stylu.

Daj mi znać, jeśli to działa dla Ciebie.

Edit: Ponieważ to jest downvoted z jakiegoś powodu, będę wyjaśnić:

kod z częścią stylu wykomentowane:

#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") 

daje nam

enter image description hereenter image description here

Kod z obecną częścią stylu

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

Nadzieja to pomaga.

EDYCJA 2: Dodano linię s.theme_use('clam'), ponieważ trzeba określić, którego motywu używasz. Działa również z classic i default, ale z jakiegoś powodu nie działa z motywem vista.

+0

Nie wiem, dlaczego jest to cofane. Użyłem tego kodu i udało mi się sprawić, że wskaźnik zniknął całkowicie w moim drzewku testowym. – RBuntu

+0

To ja Cię zarzuciłem, ponieważ wypróbowałem twój kod w oknach i nie działa zgodnie z oczekiwaniami. W każdym razie, teraz pokazałeś, że działa on na Linuksie. Przygotuję ci – BPL

+0

@ BPL To nie jest Linux, uruchomiłem kod w systemie Windows 7. Nie byłem całkowicie pewien, dlaczego to nie działa.Zrobiłem trochę więcej szturchań i wydaje mi się, że musisz określić motyw, którego chcesz użyć, zanim będziesz mógł zmienić rozmiar wskaźnika. Wydaje się działać z 's.theme_use ('default')', a także z innymi motywami takimi jak classic i clam. Wydaje się jednak, że nie działa z motywem vista. – RBuntu