vivanov 7de4f8e0a1 second commit | 7 months ago | |
---|---|---|
img | 7 months ago | |
readme.md | 7 months ago |
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()
Вот что получилось: