57 lines
2.1 KiB
Python
57 lines
2.1 KiB
Python
import tkinter as tk
|
|
from matplotlib.figure import Figure
|
|
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
|
|
import threading
|
|
import time
|
|
|
|
class LanguageChart:
|
|
def __init__(self, parent):
|
|
"""
|
|
Inicializa un gráfico de barras que muestra los lenguajes de programación más usados.
|
|
|
|
Args:
|
|
parent (tk.Frame): Frame donde se colocará el gráfico.
|
|
"""
|
|
self.parent = parent
|
|
|
|
# Datos iniciales de lenguajes más utilizados
|
|
self.languages = ["Python", "JavaScript", "Java", "C++", "C#"]
|
|
self.usage = [30, 25, 20, 15, 10] # Porcentajes de uso
|
|
|
|
# Crear el gráfico de barras
|
|
self.figure = Figure(figsize=(4, 3), dpi=100)
|
|
self.ax = self.figure.add_subplot(111)
|
|
self.ax.bar(self.languages, self.usage, color="skyblue")
|
|
self.ax.set_title("Lenguajes más usados")
|
|
self.ax.set_ylabel("Porcentaje de uso")
|
|
|
|
# Incrustar el gráfico en Tkinter
|
|
self.canvas = FigureCanvasTkAgg(self.figure, master=self.parent)
|
|
self.canvas.get_tk_widget().pack(fill="both", expand=True)
|
|
|
|
# Iniciar el hilo para actualizar el gráfico periódicamente
|
|
threading.Thread(target=self.update_chart, daemon=True).start()
|
|
|
|
def fetch_data(self):
|
|
"""
|
|
Simula la actualización de datos sobre el uso de lenguajes de programación.
|
|
|
|
Returns:
|
|
list: Lista de nuevos porcentajes de uso.
|
|
"""
|
|
self.usage = [value + 1 if value < 50 else value - 10 for value in self.usage]
|
|
time.sleep(5) # Simular un retraso en la actualización
|
|
|
|
def update_chart(self):
|
|
"""
|
|
Actualiza el gráfico de lenguajes de programación periódicamente en un hilo.
|
|
"""
|
|
while True:
|
|
self.fetch_data()
|
|
self.ax.clear()
|
|
self.ax.bar(self.languages, self.usage, color="skyblue")
|
|
self.ax.set_title("Lenguajes más usados")
|
|
self.ax.set_ylabel("Porcentaje de uso")
|
|
self.canvas.draw()
|
|
time.sleep(5) # Actualizar cada 5 segundos
|