/
Yaroslav2
/
user_finder
Обзор
Документация
Войти
/
Yaroslav2
/
user_finder
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
github_user_finder/main.py
80 строк
3 KB
Yaroslav2
create: .gitignore, favorites.json, main.py, README.md
04 май 2026, 11:08
Верифицирован
04 май 2026, 11:08
5a2d438
Код
Авторство
О чём код?
import tkinter as tk from tkinter import messagebox import requests import json import os # Путь к файлу с избранными FAV_FILE = 'favorites.json' # Загрузка избранных def load_favorites(): if os.path.exists(FAV_FILE): with open(FAV_FILE, 'r', encoding='utf-8') as f: return json.load(f) else: return [] # Сохранение избранных def save_favorites(favorites): with open(FAV_FILE, 'w', encoding='utf-8') as f: json.dump(favorites, f, indent=4) # Основное окно root = tk.Tk() root.title("GitHub User Finder") # Поле поиска search_var = tk.StringVar() search_entry = tk.Entry(root, textvariable=search_var, width=50) search_entry.pack(padx=10, pady=5) # Результаты results_listbox = tk.Listbox(root, width=80, height=15) results_listbox.pack(padx=10, pady=5) # Загруженные пользователи search_results = [] # Функция поиска пользователя def search_user(): query = search_var.get().strip() if not query: messagebox.showerror("Ошибка", "Поле поиска не должно быть пустым.") return url = f"https://api.github.com/users/{query}" response = requests.get(url) if response.status_code == 200: user_data = response.json() search_results.clear() search_results.append(user_data) results_listbox.delete(0, tk.END) display_name = user_data.get('name') or 'Нет имени' results_listbox.insert(tk.END, f"{user_data['login']} - {display_name}") else: messagebox.showerror("Ошибка", "Пользователь не найден.") # Функция добавления в избранное def add_to_favorites(): selected_index = results_listbox.curselection() if not selected_index: messagebox.showerror("Ошибка", "Выберите пользователя для добавления.") return user = search_results[selected_index[0]] favorites = load_favorites() if any(fav['login'] == user['login'] for fav in favorites): messagebox.showinfo("Информация", "Пользователь уже в избранных.") else: favorites.append(user) save_favorites(favorites) messagebox.showinfo("Успех", "Пользователь добавлен в избранные.") # Кнопки btn_search = tk.Button(root, text="Поиск", command=search_user) btn_search.pack(pady=5) btn_add_fav = tk.Button(root, text="Добавить в избранное", command=add_to_favorites) btn_add_fav.pack(pady=5) # Запуск приложения root.mainloop()