Initial commit
год назад
Файлов изменено: 1
+16–3
9f283aa
phonebook.py
+16–3
@@ -3,6 +3,7 @@ | ||
from tkinter import ttk | ||
# Класс Main - главное окно приложения | ||
class Main(tk.Frame): | ||
def __init__(self, root): | ||
super().__init__(root) | ||
@@ -11,6 +12,7 @@ | ||
self.view_records() | ||
def init_main(self): | ||
# Создание верхней панели приложения | ||
toolbar = tk.Frame(bg="#d7d8e0", bd=2) | ||
toolbar.pack(side=tk.TOP, fill=tk.X) | ||
self.add_img = tk.PhotoImage(file="./img/add.png") | ||
@@ -19,13 +21,16 @@ | ||
image=self.add_img) | ||
btn_open_dialog.pack(side=tk.LEFT) | ||
# Создание таблицы для отображения записей | ||
self.tree = ttk.Treeview(self, columns=['ID', 'name', 'tel', 'email'], height=45, show='headings') | ||
# Настройка столбцов | ||
self.tree.column('ID', width=30, anchor=tk.CENTER) | ||
self.tree.column('name', width=300, anchor=tk.CENTER) | ||
self.tree.column('tel', width=150, anchor=tk.CENTER) | ||
self.tree.column('email', width=150, anchor=tk.CENTER) | ||
# Настройка столбцов | ||
self.tree.heading('ID', text='ID') | ||
self.tree.heading('name', text='ФИО') | ||
self.tree.heading('tel', text='Телефон') | ||
@@ -65,10 +70,12 @@ | ||
Child() | ||
def records(self, name, tel, email): | ||
# Добавление записи в базу данных и обновление отображения записей | ||
self.db.insert_data(name, tel, email) | ||
self.view_records() | ||
def view_records(self): | ||
# Загрузка и отображение записей из базы данных | ||
self.db.c.execute('''SELECT * FROM db''') | ||
[self.tree.delete(i) for i in self.tree.get_children()] | ||
[self.tree.insert('', 'end', values=row) for row in self.db.c.fetchall()] | ||
@@ -96,6 +103,7 @@ | ||
[self.tree.delete(i) for i in self.tree.get_children()] | ||
[self.tree.insert('', 'end', values=row) for row in self.db.c.fetchall()] | ||
# Класс Child - окно для добавления новой записи | ||
class Child(tk.Toplevel): | ||
def __init__(self): | ||
super().__init__() | ||
@@ -110,6 +118,7 @@ | ||
self.grab_set() | ||
self.focus_set() | ||
# Создание меток и полей для ввода данных | ||
label_name = tk.Label(self, text='ФИО') | ||
label_name.place(x=50, y=50) | ||
@@ -128,11 +137,13 @@ | ||
self.entry_tel = ttk.Entry(self) | ||
self.entry_tel.place(x=200, y=110) | ||
# Кнопки "Добавить" и "Закрыть" | ||
self.button_cancel = ttk.Button(self, text='Закрыть', command=self.destroy) | ||
self.button_cancel.place(x=300, y=170) | ||
self.btn_ok = ttk.Button(self, text='Добавить') | ||
self.btn_ok.place(x=220, y=170) | ||
# Привязка события к кнопке "Добавить" для сохранения записи | ||
self.btn_ok.bind('<Button-1>', lambda event: self.view.records(self.entry_name.get(), self.entry_tel.get(), self.entry_email.get())) | ||
class Update(Child): | ||
@@ -182,7 +193,7 @@ | ||
btn_search.place(x=105, y=50) | ||
btn_search.bind('<Button-1>', lambda event: self.view.search_records(self.entry_search.get())) | ||
btn_search.bind('<Button-1>', lambda event: self.destroy(), add='+') | ||
# Класс DB - управление базой данных SQLite | ||
class DB: | ||
def __init__(self): | ||
self.conn = sqlite3.connect("db.db") | ||
@@ -197,9 +208,11 @@ | ||
self.conn.commit() | ||
def insert_data(self, name, tel, email): | ||
# Вставка новой записи в базу данных | ||
self.c.execute("INSERT INTO db (name, tel, email) VALUES(?, ?, ?)", (name, tel, email)) | ||
self.conn.commit() | ||
# Основной код приложения | ||
if __name__ == "__main__": | ||
root = tk.Tk() | ||
db = DB() |
Cherry-pick
Команда cherry-pick позволяет выбрать отдельные коммиты из одной ветки и применить их к другой.