Clima en el panel izquierdo
This commit is contained in:
parent
5b8f4f45b7
commit
6ab1ca03d3
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -1,15 +1,19 @@
|
|||
import tkinter as tk
|
||||
import threading
|
||||
import requests
|
||||
from PIL import Image, ImageTk
|
||||
from io import BytesIO
|
||||
from app import scraping
|
||||
|
||||
class PanelIzquierdo:
|
||||
def __init__(self, frame, text_widget):
|
||||
# Asociar el frame del panel izquierdo
|
||||
# Configuración del panel
|
||||
self.frame = frame
|
||||
self.frame.configure(bg="lightblue", width=200)
|
||||
self.frame.configure(bg="lightblue", width=300)
|
||||
self.frame.grid_propagate(False)
|
||||
self.frame.columnconfigure(0, weight=1)
|
||||
|
||||
# Botón para iniciar scraping (ya existente)
|
||||
boton_scrapping = tk.Button(
|
||||
frame,
|
||||
text="Iniciar Scrapping",
|
||||
|
@ -19,3 +23,57 @@ class PanelIzquierdo:
|
|||
).start()
|
||||
)
|
||||
boton_scrapping.pack(pady=5)
|
||||
|
||||
# Clima - Título
|
||||
self.weather_title = tk.Label(
|
||||
frame, text="Clima Actual", bg="lightblue", font=("Helvetica", 14, "bold"), fg="navy"
|
||||
)
|
||||
self.weather_title.pack(pady=10)
|
||||
|
||||
# Clima - Ícono
|
||||
self.weather_icon = tk.Label(frame, bg="lightblue")
|
||||
self.weather_icon.pack()
|
||||
|
||||
# Clima - Información
|
||||
self.weather_label = tk.Label(
|
||||
frame, text="Cargando clima...", bg="lightblue", font=("Helvetica", 10, "bold"), fg="black"
|
||||
)
|
||||
self.weather_label.pack(pady=5)
|
||||
|
||||
# Variables para el clima
|
||||
self.api_key = '2f79c6f35c48e876bceae7fa7f4f4735'
|
||||
self.city = 'Javea' # Cambia por la ciudad que desees
|
||||
self.update_weather()
|
||||
|
||||
def update_weather(self):
|
||||
"""Actualiza la información del clima utilizando un hilo."""
|
||||
def fetch_weather():
|
||||
try:
|
||||
url = f'http://api.openweathermap.org/data/2.5/weather?q={self.city}&appid={self.api_key}&units=metric&lang=es'
|
||||
response = requests.get(url)
|
||||
response.raise_for_status()
|
||||
data = response.json()
|
||||
|
||||
# Información del clima
|
||||
temp = data['main']['temp']
|
||||
weather = data['weather'][0]['description']
|
||||
icon_code = data['weather'][0]['icon']
|
||||
|
||||
# Actualiza el texto del clima
|
||||
self.weather_label.config(
|
||||
text=f"{self.city}:\n{temp}°C, {weather.capitalize()}"
|
||||
)
|
||||
|
||||
# Descarga y muestra el ícono del clima
|
||||
icon_url = f"http://openweathermap.org/img/wn/{icon_code}@2x.png"
|
||||
icon_response = requests.get(icon_url)
|
||||
icon_image = Image.open(BytesIO(icon_response.content))
|
||||
icon_photo = ImageTk.PhotoImage(icon_image)
|
||||
self.weather_icon.config(image=icon_photo)
|
||||
self.weather_icon.image = icon_photo # Referencia para evitar que se elimine
|
||||
|
||||
except Exception as e:
|
||||
self.weather_label.config(text=f"Error al obtener el clima.")
|
||||
print(f"Error al obtener el clima: {e}")
|
||||
|
||||
threading.Thread(target=fetch_weather, daemon=True).start()
|
||||
|
|
2
main.py
2
main.py
|
@ -64,7 +64,7 @@ menu_bar.add_cascade(label="Ayuda", menu=help_menu)
|
|||
root.config(menu=menu_bar)
|
||||
|
||||
# Crear los frames laterales y el central
|
||||
frame_izquierdo = tk.Frame(root, bg="lightblue", width=200)
|
||||
frame_izquierdo = tk.Frame(root, bg="lightblue", width=300)
|
||||
frame_central = tk.Frame(root, bg="white")
|
||||
frame_derecho = tk.Frame(root, bg="lightgreen", width=200)
|
||||
|
||||
|
|
Loading…
Reference in New Issue