Stronę tą wyświetlono już: 6825 razy
Ta kontrolka umożliwia tworzenie rozgałęziające się listy zwijane. Jest często spotykana w programach do przeglądania zawartości folderów, w oknach dialogowych z zaawansowanym systemem ustawień programu. W końcu w programie Regedit systemu Windows, który służy do przeglądania rejestru systemowego. Nie ma co jednak gadać zbyt długo, lepiej poświęcić nieco swojego czasu i zerknąć łaskawym okiem na kod programu:
import tkinter as tk
import tkinter.ttk as ttk
#import tkinter.messagebox as msb
class Application:
def __init__(self):
self.window = tk.Tk()
self.treeview = ttk.Treeview(self.window) # tworzenie kontrolki Treeview
africa_countries = ['Algieria ', 'Angola ', 'Benin ', 'Botswana ', 'Burkina Faso ', 'Burundi ', 'Czad ', 'Demokratyczna Republika Konga ', 'Dżibuti ', 'Egipt ', 'Erytrea ', 'Etiopia ', 'Gabon ', 'Gambia ', 'Ghana ', 'Gwinea ', 'Gwinea Bissau ', 'Gwinea Równikowa ', 'Kamerun ', 'Kenia ', 'Komory ', 'Kongo ', 'Lesotho ', 'Liberia ', 'Libia ', 'Madagaskar ', 'Malawi ', 'Mali ', 'Maroko ', 'Mauretania ', 'Mauritius ', 'Mozambik ', 'Namibia ', 'Niger ', 'Nigeria ', 'Południowa Afryka ', 'Republika Środkowoafrykańska ', 'Republika Zielonego Przylądka ', 'Rwanda ', 'Senegal ', 'Seszele ', 'Sierra Leone ', 'Somalia ', 'Suazi ', 'Sudan ', 'Sudan Południowy ', 'Tanzania ', 'Togo ', 'Tunezja ', 'Uganda ', 'Wybrzeże Kości Słoniowej ', 'Wyspy Świętego Tomasza i Książęca ', 'Zambia ', 'Zimbabwe ']
self.add_values(africa_countries, "Afryka") # tworzenie drzewa z gałęziami
australia_and_oceania_countries = ['Australia ', 'Fidżi ', 'Kiribati ', 'Mikronezja ', 'Nauru ', 'Nowa Zelandia ', 'Palau ', 'Papua-Nowa Gwinea ', 'Samoa ', 'Tonga ', 'Tuvalu ', 'Vanuatu ', 'Wyspy Marshalla ', 'Wyspy Salomona']
self.add_values(australia_and_oceania_countries, "Australia i Oceania") # metoda klasy, która doda całą gałąź drzewa do istniejącego już pnia
asia_countries = ['Afganistan ', 'Arabia Saudyjska ', 'Armenia ', 'Azerbejdżan ', 'Bahrajn ', 'Bangladesz ', 'Bhutan ', 'Brunei ', 'Chiny ', 'Cypr ', 'Filipiny ', 'Gruzja ', 'Indie ', 'Indonezja ', 'Irak ', 'Iran ', 'Izrael ', 'Japonia ', 'Jemen ', 'Jordania ', 'Kambodża ', 'Katar ', 'Kazachstan ', 'Kirgistan ', 'Korea Południowa ', 'Korea Północna ', 'Kuwejt ', 'Laos ', 'Liban ', 'Malediwy ', 'Malezja ', 'Mjanma ', 'Mongolia ', 'Nepal ', 'Oman ', 'Pakistan ', 'Rosja ', 'Singapur ', 'Sri Lanka ', 'Syria ', 'Tadżykistan ', 'Tajlandia ', 'Timor Wschodni ', 'Turcja ', 'Turkmenistan ', 'Uzbekistan ', 'Wietnam ', 'Zjednoczone Emiraty Arabskie']
self.add_values(asia_countries, "Azja")
european_countries = ['Albania', 'Andora', 'Austria', 'Belgia', 'Białoruś', 'Bośnia i Hercegowina', 'Bułgaria', 'Chorwacja', 'Czarnogóra', 'Czechy', 'Dania', 'Estonia', 'Finlandia', 'Francja', 'Grecja', 'Hiszpania', 'Holandia', 'Irlandia', 'Islandia', 'Kazachstan', 'Liechtenstein', 'Litwa', 'Luksemburg', 'Łotwa', 'Macedonia', 'Malta', 'Mołdawia', 'Monako', 'Niemcy', 'Norwegia', 'Polska', 'Portugalia', 'Rosja', 'Rumunia', 'San Marino', 'Serbia', 'Słowacja', 'Słowenia', 'Szwajcaria', 'Szwecja', 'Turcja', 'Ukraina', 'Watykan', 'Węgry', 'Wielka Brytania', 'Włochy']
self.add_values(european_countries, "Europa")
south_america_countries = ['Argentyna ', 'Boliwia ', 'Brazylia ', 'Chile ', 'Ekwador ', 'Gujana ', 'Kolumbia ', 'Paragwaj ', 'Peru ', 'Surinam ', 'Trynidad i Tobago ', 'Urugwaj ', 'Wenezuela']
self.add_values(south_america_countries, "Południowa Ameryka")
north_america_countries = ['Antigua i Barbuda ', 'Bahamy ', 'Barbados ', 'Belize ', 'Dominika ', 'Dominikana ', 'Grenada ', 'Gwatemala ', 'Haiti ', 'Honduras ', 'Jamajka ', 'Kanada ', 'Kostaryka ', 'Kuba ', 'Meksyk ', 'Nikaragua ', 'Panama ', 'Saint Kitts i Nevis ', 'Saint Lucia ', 'Saint Vincent i Grenadyny ', 'Salwador ', 'Stany Zjednoczone']
self.add_values(north_america_countries, "Północna Ameryka")
poland_woj = ['dolnośląskie ', 'kujawsko-pomorskie ', 'lubelskie ', 'lubuskie ', 'łódzkie ', 'małopolskie ', 'mazowieckie ', 'opolskie ', 'podkarpackie ', 'podlaskie ', 'pomorskie ', 'śląskie ', 'świętokrzyskie ', 'warmińsko-mazurskie ', 'wielkopolskie ', 'zachodniopomorskie']
self.add_items("Polska", ['Województwa']) # metoda klasy, która doda gałęzie do istniejącego już drzewa
self.add_items("Województwa", poland_woj)
self.treeview.bind("<<TreeviewSelect>>", self.on_tv_select) # podpinam zdarzenie, wywoływane, gdy kliknięto jakiś element drzewa
# reszta to nudne i przyziemne podpinanie kontrolki scrollbar oraz pozycjonowanie scrollbara i kontrolki treeview
self.sb_treeview = tk.Scrollbar(self.window)
self.treeview.config(yscrollcommand = self.sb_treeview.set)
self.sb_treeview.config(command = self.treeview.yview)
self.sb_treeview.place(in_ = self.treeview, relx = 1., y = 0, relheight = 1.)
self.treeview.place(x = 0, y = 0, relwidth = 1., relheight = 1., width = -18)
self.window.mainloop()
def add_values(self, values, name): # metoda wstawiająca nowe drzewo z gałęzią
value = self.treeview.insert("", 'end', name, text = name) # dodanie nowego drzewa (korzenia głównego)
for i in values:
self.treeview.insert(value, 'end', i, text = i) # dodawanie kolejnych gałęzi drzewa
def add_items(self, iid, values): # dodawanie podgałęzi do istniejącej gałęzi drzewa
for i in values:
self.treeview.insert(iid, 'end', i, text = i) # dodawanie podgałęzi drzewa
def on_tv_select(self, event): # metoda podpięta pod zdarzenie wywoływane po kliknięciu jakiegoś elementu na liście
curItem = self.treeview.focus() # element, który otrzymał fokus
print(self.treeview.item(curItem)["text"]) # wyświetlanie w konsoli tekstu z klikniętego elementu drzewa
#msb.showinfo("Info", self.treeview.item(curItem)["text"])
apl = Application()
Jak powyższy kod zadziała to powinno pojawić się okienko takie, jak na poniżej załączonym obrazku.