Python

Имитация "записной книжки" на Python (...)

Заготовка работает. По пока без базы данных. Для ее примитивной замены насколько понимаю в методе append_obj нужно данные из инпутов записывать в файл, потом читать их из файла и заносить в массив obj_args. Кошерное решение?
Ну а как дело дойдет до GUI просто вместо инпутов делаем в Тикинтере поля ввода и кнопку "добавить контакт", на которую вешаем append_obj. С этим понятно. И такой тихой сапой получим "записную книжку"
 class Person: 
instances = []

def __init__(self, name, subname, sex, age, number, adress):
self.name = name
self.subname = subname
self.sex = sex
self.age = age
self.number = number
self.adress = adress
self.instances.append(self)

@staticmethod
def output():
inp = input('Введите искомую фамилию ')
test = False
for i in Person.instances:
if i.subname == inp:
test = True
print(f'имя {i.name} \nпол: {i.sex} \nвозраст: {i.age} \nномер: {i.number} \nадрес: {i.adress}')
if not test:
print('Фамилия не найдена')

@staticmethod
def append_obj():
obj_args = []
queries = ['Имя: ', 'Фамилия: ', 'Пол: ', 'Возраст: ', 'Номер: ', 'Адрес: ']
for i in range(len(queries)):
obj_args.append(input(queries[i]))
obj = Person(*obj_args)


Person.append_obj()
Person.output()
Person.output()
Зачем корявое добавление в файл, когда есть SQL
ГБ
Геннадий Бутакин
25 127
Лучший ответ
Александр Бордюгов SQL еще подучить надобно... Мало с ним знаком пока. Хотя предварительно посмотрел что там такое - оказалось что в принципе всё легко
Зачем спрашиваешь если сам ответ и знаешь
Евгений Маслов
Евгений Маслов
14 368
Алексей Александрович Как у тебя бомбит от того, что твоя нейросетка ничего не может ответить. И правильно, страдай, раб ИИ. Для тебя это - только начало.
 import tkinter as tk 
from tkinter import messagebox

class Person:
instances = []

def __init__(self, name, subname, sex, age, number, adress):
self.name = name
self.subname = subname
self.sex = sex
self.age = age
self.number = number
self.adress = adress
self.instances.append(self)

@staticmethod
def output():
inp = input('Введите искомую фамилию ')
test = False
for i in Person.instances:
if i.subname == inp:
test = True
print(f'имя {i.name} \nпол: {i.sex} \nвозраст: {i.age} \nномер: {i.number} \nадрес: {i.adress}')
if not test:
print('Фамилия не найдена')

@staticmethod
def append_obj():
obj_args = []
queries = ['Имя: ', 'Фамилия: ', 'Пол: ', 'Возраст: ', 'Номер: ', 'Адрес: ']
for i in range(len(queries)):
obj_args.append(input(queries[i]))
obj = Person(*obj_args)

class PersonGUI:
def __init__(self, master):
self.master = master
master.title("Person Database")

# Create labels and entry fields for each attribute
tk.Label(master, text="Имя:").grid(row=0)
tk.Label(master, text="Фамилия:").grid(row=1)
tk.Label(master, text="Пол:").grid(row=2)
tk.Label(master, text="Возраст:").grid(row=3)
tk.Label(master, text="Номер:").grid(row=4)
tk.Label(master, text="Адрес:").grid(row=5)

self.name_entry = tk.Entry(master)
self.subname_entry = tk.Entry(master)
self.sex_entry = tk.Entry(master)
self.age_entry = tk.Entry(master)
self.number_entry = tk.Entry(master)
self.adress_entry = tk.Entry(master)

self.name_entry.grid(row=0, column=1)
self.subname_entry.grid(row=1, column=1)
self.sex_entry.grid(row=2, column=1)
self.age_entry.grid(row=3, column=1)
self.number_entry.grid(row=4, column=1)
self.adress_entry.grid(row=5, column=1)

# Create buttons to append a new person and output information
tk.Button(master, text="Добавить", command=self.add_person).grid(row=6, column=0, pady=10)
tk.Button(master, text="Найти", command=self.find_person).grid(row=6, column=1, pady=10)

def add_person(self):
# Get attribute values from entry fields and create a new Person object
name = self.name_entry.get()
subname = self.subname_entry.get()
sex = self.sex_entry.get()
age = self.age_entry.get()
number = self.number_entry.get()
adress = self.adress_entry.get()

obj = Person(name, subname, sex, age, number, adress)

# Show a message box to confirm the new person was added
messagebox.showinfo("Добавлено", f"{name} {subname} добавлен в базу данных.")

# Clear the entry fields
self.name_entry.delete(0, tk.END)
self.subname_entry.delete(0, tk.END)
self.sex_entry.delete(0, tk.END)
self.age_entry.delete(0, tk.END)
self.number_entry.delete(0, tk.END)
self.adress_entry.delete(0, tk.END)

Александр Гладких
     def find_person(self):  
# Get the surname to search for and check if it matches any Person objects
inp = self.subname_entry.get()
test = False
for i in Person.instances:
if i.subname == inp:
test = True
# Show a message box with the person's information
messagebox.showinfo("Найдено", f"имя {i.name} \nпол: {i.sex} \nвозраст: {i.age} \nномер: {i.number} \nадрес: {i.adress}")
if not test:
# Show a message box if the surname was not found
messagebox.showwarning("Не найдено", "Фамилия не найдена.")

# Clear the entry field
self.subname_entry.delete(0, tk.END)

root = tk.Tk()
my_gui = PersonGUI(root)
root.mainloop()
Александр Бордюгов С этим мог и не стараться. Тем более если это нейросеть