Guest User

Untitled

a guest
Aug 17th, 2023
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.22 KB | None | 0 0
  1. from tkinter import *
  2. # import os
  3.  
  4.  
  5. class Person:
  6.     instances = []
  7.     data_from_entries = ''
  8.     search = ''
  9.  
  10.     def __init__(self, name, subname, sex, age, number, adress):
  11.         self.name = name
  12.         self.subname = subname
  13.         self.sex = sex
  14.         self.age = age
  15.         self.number = number
  16.         self.adress = adress
  17.         self.instances.append(self)
  18.  
  19.     @staticmethod
  20.     def output():
  21.         # os.system('CLS')
  22.         inp = Person.search
  23.         print(Person.search)
  24.         test = False
  25.         pass_name = set('test set')
  26.         for i in Person.instances:
  27.             if i.subname.strip() == inp.strip():
  28.                 test = True
  29.                 if not i.name in pass_name:
  30.                     print(f'имя: {i.name} \nпол: {i.sex} \nвозраст: {i.age} \nномер: {i.number} \nадрес: {i.adress}')
  31.             pass_name.add(i.name)
  32.         if not test:
  33.             print('Фамилия не найдена')
  34.         print(pass_name)
  35.  
  36.     @staticmethod
  37.     def append_obj_to_file():
  38.         with open('objects.txt', 'a+', encoding='utf-8') as file:
  39.             data = Person.data_from_entries
  40.             if data.count('не_указано') < 6:
  41.                 file.write(data + ' ')
  42.                 file.seek(0)
  43.                 # s = file.read()
  44.  
  45.     @staticmethod
  46.     def read_db():
  47.         with open('objects.txt', encoding='utf-8') as file:
  48.             s = file.read().strip().split(' ')
  49.             res = []
  50.             for i in range(0, len(s) - 5, 6):
  51.                 res += [s[i: i + 6]]
  52.             return res
  53.  
  54.     @staticmethod
  55.     def create_objects():
  56.         s = Person.read_db()
  57.         for i in s:
  58.             obj = Person(*i)
  59.         # print('метод create_objects вызван')
  60.  
  61.     @staticmethod
  62.     def draw_gui():
  63.         root = Tk()
  64.         root.geometry('200x500+200+100')
  65.  
  66.         def change_spaces(s):
  67.             s = s.replace(' ', '_')
  68.             return s
  69.  
  70.         def test_button():
  71.             result = [e1.get(), e2.get(), e3.get(), e4.get(), e5.get(), e6.get()]
  72.             result2 = list(map(lambda x: 'не_указано' if x == '' else x, result))
  73.             for i in range(len(result2)):
  74.                 result2[i] = change_spaces(result2[i])
  75.             Person.data_from_entries = ' '.join(result2)
  76.             e1.delete(0, END)
  77.             e2.delete(0, END)
  78.             e3.delete(0, END)
  79.             e4.delete(0, END)
  80.             e5.delete(0, END)
  81.             e6.delete(0, END)
  82.  
  83.             Person.append_obj_to_file()
  84.             Person.create_objects()
  85.             print('имеем двумерный массив данных', Person.read_db(), sep='\n')
  86.             # Person.output()
  87.  
  88.         def search_name():
  89.             e7.delete(0, END)
  90.             Person.create_objects()
  91.             # print('имеем двумерный массив данных', Person.read_db(), sep='\n')
  92.             Person.search = e7.get()
  93.             Person.output()
  94.  
  95.         label1 = Label(text='Имя')
  96.         e1 = Entry(width=20)
  97.         label2 = Label(text='Фамилия')
  98.         e2 = Entry(width=20)
  99.         label3 = Label(text='Пол')
  100.         e3 = Entry(width=20)
  101.         label4 = Label(text='Возраст')
  102.         e4 = Entry(width=20)
  103.         label5 = Label(text='Номер')
  104.         e5 = Entry(width=20)
  105.         label6 = Label(text='Адрес')
  106.         e6 = Entry(width=20)
  107.         button = Button(text='Добавить контакт', command=test_button)
  108.         e7 = Entry(width=20)
  109.         button2 = Button(text='Искомая фамилия', command=search_name)
  110.         label7 = Label(text='Результат\n поиска')
  111.  
  112.         label1.pack()
  113.         e1.pack()
  114.         label2.pack()
  115.         e2.pack()
  116.         label3.pack()
  117.         e3.pack()
  118.         label4.pack()
  119.         e4.pack()
  120.         label5.pack()
  121.         e5.pack()
  122.         label6.pack()
  123.         e6.pack()
  124.         button.pack()
  125.         e7.pack()
  126.         button2.pack()
  127.         label7.pack()
  128.         e1.focus()
  129.  
  130.         root.mainloop()
  131.  
  132.  
  133. Person.draw_gui()
  134.  
  135. # Person.append_obj_to_file()
  136. # Person.append_obj_to_file()
  137. # Person.append_obj_to_file()
  138. # Person.create_objects()
  139. # Person.output()
  140. # Person.output()
Advertisement
Add Comment
Please, Sign In to add comment