import tkinter as tk from tkinter import scrolledtext import requests # API'den veri alacak fonksiyon def fetch_appointments(): url = "https://api.schengenvisaappointments.com/api/visa-list/?format=json" try: response = requests.get(url, timeout=10) # Timeout ekledik response.raise_for_status() # Hata kodu 4xx/5xx için exception fırlatır # Text alanlarını temizle available_text.delete(1.0, tk.END) unavailable_text.delete(1.0, tk.END) # API'den gelen veriyi işleme data = response.json() if data: for entry in data: country = entry.get("mission_country", "bilinmiyor") appointment_date = entry.get("appointment_date") if appointment_date: available_text.insert(tk.END, f"{country}: {appointment_date}\n") else: unavailable_text.insert(tk.END, f"{country}: Mevcut randevu yok\n") else: available_text.insert(tk.END, "API'den veri alınamadı.\n") unavailable_text.insert(tk.END, "API'den veri alınamadı.\n") except requests.exceptions.RequestException as e: available_text.insert(tk.END, f"Hata: {e}\n") unavailable_text.insert(tk.END, f"Hata: {e}\n") # Ekrandaki tüm yazıları temizleyen fonksiyon def reset(): available_text.delete(1.0, tk.END) unavailable_text.delete(1.0, tk.END) # Tkinter pencere oluşturma root = tk.Tk() root.title("Randevu Bilgisi") root.geometry("800x500") # Başlat butonu start_button = tk.Button(root, text="Başlat", command=fetch_appointments) start_button.pack(pady=20) # Çerçeve oluşturma (sol ve sağ paneli tutacak) frame = tk.Frame(root) frame.pack(fill=tk.BOTH, expand=True) # Sol panel: Randevu tarihi olan ülkeler SHEKO left_frame = tk.Frame(frame) left_frame.pack(side=tk.LEFT, fill=tk.BOTH, expand=True, padx=10) left_label = tk.Label(left_frame, text="Randevu Tarihi Olan Ülkeler", font=("Arial", 14)) left_label.pack(pady=10) available_text = scrolledtext.ScrolledText(left_frame, width=40, height=15) available_text.pack(padx=10, pady=10) # Sağ panel: Randevu tarihi olmayan ülkeler right_frame = tk.Frame(frame) right_frame.pack(side=tk.RIGHT, fill=tk.BOTH, expand=True, padx=10) right_label = tk.Label(right_frame, text="Mevcut Randevu Yok Ülkeler", font=("Arial", 14)) right_label.pack(pady=10) unavailable_text = scrolledtext.ScrolledText(right_frame, width=40, height=15) unavailable_text.pack(padx=10, pady=10) # Reset butonu reset_button = tk.Button(root, text="Reset", command=reset) reset_button.pack(pady=10) # Ana döngü root.mainloop()