**[EXAM (в процессе доработки)](https://github.com/kolei/OAP/blob/master/articles/exam.md)**
***
**Python**
***
Filter
***
```
import tkinter as tk
from tkinter import ttk
from tkinter import *
from PIL import Image, ImageTk

# Создание окна
root = tk.Tk()
root.title("Иванов Валера И-21")
root.geometry("1280x720")
root.resizable(height=False, width=False)

# вставка логотипа
img = PhotoImage(file="logo.png")

b = Label(image = img)
b.img = "logo.png"
b.pack()

image_originals = Image.open("logo.png")
image_tk = ImageTk.PhotoImage(image_originals)

# Создаем поле ввода для фильтрации
filter_entry = ttk.Combobox(root)
filter_entry["values"] = ['Toyota Trueno AE86','Toyota Supra A80', 'Nissal Skyline R34', 'Nissan Silvia S15']
filter_entry.current(0)
filter_entry.pack()

price_filter_entry = ttk.Combobox(root)
price_filter_entry["values"] = [15000,20000, 25000, 30000]
price_filter_entry.current(0)
price_filter_entry.pack()
price_filter_entry.pack()

year_filter_entry = ttk.Combobox(root)
year_filter_entry["values"] = [1995,1996, 1999]
year_filter_entry.current(0)
year_filter_entry.pack()
year_filter_entry.pack()
# Функция для фильтрации данных
def filter_data(event):
    # Получаем значение из поля ввода
    filter_value = filter_entry.get().lower()

    # Очищаем таблицу
    for item in tree.get_children():
        tree.delete(item)

    # Добавляем отфильтрованные элементы обратно в таблицу
    for person in cars:
        if person[0].lower().find(filter_value) != -1:
            tree.insert('', END, values=person)

# Привязываем функцию фильтрации к событию изменения текста в поле ввода
filter_entry.bind('<KeyRelease>', filter_data)

# Функция для фильтрации данных по цене
def filter_by_price(event):
    # Получаем значение из поля ввода
    filter_value = price_filter_entry.get()

    # Очищаем таблицу
    for item in tree.get_children():
        tree.delete(item)

    # Добавляем отфильтрованные элементы обратно в таблицу
    for person in cars:
        if filter_value == "" or int(person[1]) == int(filter_value):
            tree.insert('', END, values=person)

# Привязываем функцию фильтрации к событию изменения текста в поле ввода
price_filter_entry.bind('<KeyRelease>', filter_by_price)

# Функция для фильтрации данных по году выпуска
def filter_by_year(event):
    # Получаем значение из поля ввода
    filter_value = year_filter_entry.get()

    # Очищаем таблицу
    for item in tree.get_children():
        tree.delete(item)

    # Добавляем отфильтрованные элементы обратно в таблицу
    for person in cars:
        if filter_value == "" or int(person[2]) == int(filter_value):
            tree.insert('', END, values=person)

# Привязываем функцию фильтрации к событию изменения текста в поле ввода
year_filter_entry.bind('<KeyRelease>', filter_by_year)


cars = [('Toyota Trueno AE86', 15000, 1996), ('Toyota Supra A80', 30000, 1996), ('Nissal Skyline R34', 25000, 1995), ('Nissan Silvia S15', 20000, 1999)]
columns = ('title', 'price', 'year')

tree = ttk.Treeview(columns=columns, show='headings')
tree.pack(fill=BOTH, expand=1)


# сортировка данных в таблице
def sort(col, reverse):
    # получаем все значения столбцов в виде отдельного списка
    l = [(tree.set(k, col), k) for k in tree.get_children("")]
    # сортируем список
    l.sort(reverse=reverse)
    # переупорядочиваем значения в отсортированном порядке
    for index,  (_, k) in enumerate(l):
        tree.move(k, "", index)
    # в следующий раз выполняем сортировку в обратном порядке
    tree.heading(col, command=lambda: sort(col, not reverse))


tree.heading('title', text='Название',anchor=W, command=lambda: sort(0, False))
tree.heading('price', text='Цена в день',anchor=W, command=lambda: sort(1, False))
tree.heading('year', text='Год выпуска',anchor=W, command=lambda: sort(2, False))

tree.column("#1", stretch=NO, width=70)
tree.column("#2", stretch=NO, width=60)
tree.column("#3", stretch=NO, width=100)

for person in cars:
    tree.insert('', END,values=person)

# Создание 10 записей
entries = []
for i in range(10):
    entry = tk.Entry(root)
    entry.pack()
    entries.append(entry)

# Создание кнопки "Отправить"
button = tk.Button(root, text="Отправить")
button.pack()


# Обработчик события нажатия на кнопку "Отправить"
def send_entries():
    for entry in entries:
        print(entry.get())


button.config(command=send_entries)


# Запуск цикла событий
root.mainloop()
```
***
**Вот что получилось:**
***
![](./img/name.png)
***
![](./img/price.png)
***
![](./img/year.png)
***