Скриншот архива с проектом
Структура проекта
Задание
Разработать программу на языке Python для учёта выпускников. В качестве графического интерфейса использовать Tkinter.
Функционал программы
- добавление выпускника;
- редактирование данных;
- удаление данных;
- поиск выпускника по его фамилии;
- обновление данных
Фрагмент программного кода
import tkinter as tk from tkinter import ttk import sqlite3 from PIL import ImageTk import customtkinter # customtkinter.set_appearance_mode("dark") # customtkinter.set_default_color_theme("dark-blue") # Класс Main def open_update_dialog(): Update() class Main(customtkinter.CTkFrame): def __init__(self, root): super().__init__(root) self.tree = None self.refresh_img = ImageTk.PhotoImage(file='refresh.png') self.search_img = ImageTk.PhotoImage(file='search.png') self.delete_img = ImageTk.PhotoImage(file='delete.png') self.edit_img = ImageTk.PhotoImage(file='new_edit.png') self.add_img = ImageTk.PhotoImage(file='new_add.png') self.init_main() self.db = db self.view_records() # Главное окно def init_main(self): title_label = tk.Label(root, text="Выпускники", font=("Arial", 15, "bold"), border=12, relief=tk.GROOVE, bg="blue", foreground="yellow") title_label.pack(side=tk.TOP, fill=tk.X) toolbar = tk.Frame(bg='beige', bd=2) toolbar.pack(side=tk.TOP, fill=tk.X) btn_open_dialog = tk.Button(toolbar, text='Добавить выпускника', command=self.open_dialog, bg='beige', bd=0, compound=tk.TOP, image=self.add_img) btn_open_dialog.pack(side=tk.LEFT) btn_edit_dialog = tk.Button(toolbar, text='Редактировать', bg='beige', bd=0, image=self.edit_img, compound=tk.TOP, command=open_update_dialog) btn_edit_dialog.pack(side=tk.LEFT) btn_delete_dialog = tk.Button(toolbar, text='Удалить', bg='beige', bd=0, image=self.delete_img, compound=tk.TOP, command=self.delete_records) btn_delete_dialog.pack(side=tk.LEFT) btn_search = tk.Button(toolbar, text='Поиск', bg='beige', bd=0, image=self.search_img, compound=tk.TOP, command=self.open_search_dialog) btn_search.pack(side=tk.LEFT) btn_refresh = tk.Button(toolbar, text='Обновить', bg='beige', bd=0, image=self.refresh_img, compound=tk.TOP, command=self.view_records) btn_refresh.pack(side=tk.LEFT) columns = ('ID', 'full_name', 'position', 'salary') self.tree = ttk.Treeview(self, columns=columns, height=15, show='headings') self.tree.column('ID', width=30, anchor=tk.CENTER) self.tree.column('full_name', width=365, anchor=tk.CENTER) self.tree.column('position', width=120, anchor=tk.CENTER) self.tree.column('salary', width=110, anchor=tk.CENTER) self.tree.heading('ID', text='ID') self.tree.heading('full_name', text='Выпускник') self.tree.heading('position', text='Должность') self.tree.heading('salary', text='Зарплата') self.tree.pack(side=tk.LEFT) scroll = tk.Scrollbar(self, command=self.tree.yview) scroll.pack(side=tk.LEFT, fill=tk.Y) self.tree.configure(yscrollcommand=scroll.set) # Добавление данных def records(self, full_name, position, salary): self.db.insert_data(full_name, position, salary) self.view_records() # Обновление данных def update_record(self, full_name, position, salary): self.db.c.execute('''UPDATE graduates SET full_name=?, position=?, salary=? WHERE ID=?''', (full_name, position, salary, self.tree.set(self.tree.selection()[0], '#1'))) self.db.conn.commit() self.view_records() # Вывод данных def view_records(self): self.db.c.execute('''SELECT * FROM graduates''') [self.tree.delete(i) for i in self.tree.get_children()] [self.tree.insert('', 'end', values=row) for row in self.db.c.fetchall()] # Удаление данных def delete_records(self): for selection_item in self.tree.selection(): self.db.c.execute('''DELETE FROM graduates WHERE id=? ''', (self.tree.set(selection_item, '#1'),)) self.db.conn.commit() self.view_records() # Поиск данных def search_records(self, full_name): full_name = ('%' + full_name + '%',) self.db.c.execute('''SELECT * FROM graduates WHERE full_name LIKE ?''', full_name) [self.tree.delete(i) for i in self.tree.get_children()] [self.tree.insert('', 'end', values=row) for row in self.db.c.fetchall()] # Открытие дочернего окна @staticmethod def open_dialog(): Child() @staticmethod def open_search_dialog(): Search() # Основной код для запуска if __name__ == "__main__": root = customtkinter.CTk() db = DB() app = Main(root) app.pack() root.geometry("665x500+300+200") root.title("Учет выпускников") root.resizable(False, False) root.mainloop()
Пояснения по запуску программы
С оффициального сайта скачать и установить Python, с оффициального сайта скачать и установить PyCharm. Открыть проект. Запустить программу.
admin