Kontrolka Treeview w tkinter
Stronę tą wyświetlono już: 5031 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.


Tytuł:
Python w zadaniach. Programowanie dla młodzieży. Poziom podstawowy
Autor:
Urszula Wiejak, Adrian Wojciechowski

Tytuł:
Python i praca z danymi. Przetwarzanie, analiza, modelowanie i wizualizacja. Wydanie III
Autor:
Avinash Navlani, Armando Fandango, Ivan Idris

Tytuł:
Black Hat Python. Język Python dla hakerów i pentesterów. Wydanie II
Autor:
Justin Seitz, Tim Arnold

Tytuł:
Python z życia wzięty. Rozwiązywanie problemów za pomocą kilku linii kodu
Autor:
Lee Vaughan

Tytuł:
Python dla nastolatków. Projekty graficzne z Python Turtle
Autor:
Krzysztof Łos

Tytuł:
Python i Excel. Nowoczesne środowisko do automatyzacji i analizy danych
Autor:
Felix Zumstein

Tytuł:
Python dla testera
Autor:
Piotr Wróblewski

Tytuł:
Python 3. Projekty dla początkujących i pasjonatów
Autor:
Adam Jurkiewicz

Tytuł:
Machine learning, Python i data science. Wprowadzenie
Autor:
Andreas C. Müller, Sarah Guido

Tytuł:
Python na maturze. Rozwiązania i analiza wybranych zadań programistycznych
Autor:
Roland Zimek