def exit(self):
"""Метод для выхода из программы"""
self.run = False
time.sleep(.1)
self.root.destroy()
def set_text(self, entry, text):
"""Метод для вывода текста в поле на форме"""
entry.delete(0, tk.END)
entry.insert(0, text)
def show_data(self):
"""Метод для вывода данных в форму"""
self.set_text(self.name_entry, text=self.profile['name'])
self.set_text(self.lastname_entry, text=self.profile['lastname'])
self.set_text(self.status_entry, text=self.profile['status'])
self.set_text(self.city_entry, text=self.profile['city'])
self.set_text(self.age_entry, text=self.profile['age'])
self.set_text(self.gender_entry, text=self.profile['gender'])
# если у профиля есть фото
if self.profile['photo'] is not None:
# делаем картинку
image = Image.open(io.BytesIO(self.profile['photo']))
# задаем ей размер 250 на 400 пикселей
image = image.resize([260, 400])
# преобразуем в PhotoImage
img_tk = ImageTk.PhotoImage(image)
# привязываем к канве
self.photo.image = img_tk
# выводим
self.photo.create_image([0, 0], image=img_tk, anchor="nw")
else:
# если нет фото - то не показываем
self.photo.image = None
def get_data_from_db(self):
"""Метод для получения данных из базы и записи в переменные класса"""
conn = sqlite3.connect('db/last.db')
cur = conn.cursor()
c = cur.execute("""SELECT name, lastname, photo, status, city, age, gender FROM new_test5""")
data = c.fetchall()
for index, (name, lastname, photo, status, city, age, gender) in enumerate(data):
curImg = cv2.imdecode(np.frombuffer(photo, dtype='uint8'), cv2.IMREAD_COLOR)
self.data[index] = {'name': name,
'lastname': lastname,
'status': status,
'city': city,
'age': age,
'gender': gender,
'photo': photo
}
self.images.append(curImg)
conn.close()
# это можно будет потом вынести в отдельный метод
self.encodeListKnown = self.findEncodings(self.images)
statusbar = tk.Label(root, text="Процесс загрузки данных", bd=1, relief=tk.SUNKEN, anchor=tk.W)
statusbar.place(x=30, y=340)
master = tk.Tk
pb1 = ttk.Progressbar(root, orient="horizontal", mode="determinate", maximum=100, value=0)
pb1.place(x=50, y=315)
master.update(self)
pb1['value'] =0
master.update(self)
while pb1['value']<100:
pb1['value'] +=10
master.update(self)
time.sleep(0.5)
if pb1['value'] == 100:
mb.showinfo(message='Загрузка данных завершена, нажмите кнопку Start')
#print("Декодирование закончено")
def findEncodings(self, images):
"""Метод для получения списка лиц из списка картинок"""
encodeList = []
for img in images:
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
encode = face_recognition.face_encodings(img)[0]
encodeList.append(encode)
return encodeList
if __name__ == "__main__":
root = tk.Tk()
root.title("Форма с данными")
root.resizable(False, False)
Application(root)
root.mainloop()