elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Python (Moderador: Danielㅤ)
| | |-+  [Python] Hay alguna forma de automatizar este proceso de Ipywidgets?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Python] Hay alguna forma de automatizar este proceso de Ipywidgets?  (Leído 5,773 veces)
M401

Desconectado Desconectado

Mensajes: 119


:$


Ver Perfil
[Python] Hay alguna forma de automatizar este proceso de Ipywidgets?
« en: 17 Febrero 2023, 20:46 pm »

Buenas. Estoy acomodando un cuaderno en Colab y me topé con este problema al querer automatizar la creación de botones horizontales.

  Tengo un diccionario, donde pongo el nombre de la variable y al lado la URL de un archivo a descargar.

Código:
diccionario = {
    "Ahri":{"Display":"Ahri (LoL)", "URL":"Url_del_archivo","Button":"primary"},
    "YoRHA":{"Display":"YoRHA No.2 type B", "URL":"Url_del_archivo","Button":"primary"},
}

  Luego las convierto en una variable a cada una y las defino como un botón:

Código:
for personaje in diccionario:
   salida = diccionario[personaje]
   makeadownloadbutton(personaje, salida["Display"], salida["URL"], salida["Button"])

def makeadownloadbutton(key, description, url, mcolor):
  globals()[key] = widgets.ToggleButton(
    value=False,
    description=description,
    disabled=False,
    button_style=mcolor, # 'success', 'info', 'warning', 'danger' or ''
    tooltip='Download '+description,
    icon='user' # (FontAwesome names without the `fa-` prefix)
  )
  return

  Entonces el problema, es que a la hora de usar "HBox", Tengo que definir cada una de las variables utilizadas para que se muestren:

Código:
Botones_a_mostrar = widgets.HBox([Ahri, YoRHA])

  Hay alguna manera de no tener que especificar cada una de las variables a usar en HBox? La duda me surgió porque estoy utilizando un diccionario con muchísimos terminos y no quiero estar escribiendo cada una de las variables ahí


En línea

Pero aunque los que sepan me digan que no, yo sé muy bien que existe el lado oscuro del sol. – El lado soleado de la calle
Danielㅤ
Moderador
***
Desconectado Desconectado

Mensajes: 1.853


🔵🔵🔵🔵🔵🔵🔵


Ver Perfil
Re: [Python] Hay alguna forma de automatizar este proceso de Ipywidgets?
« Respuesta #1 en: 17 Febrero 2023, 22:31 pm »

Hola, si es posible lograr eso, tenes que usar una lista y dentro de ellas todas las demás que desees agregar el valor, sería una multi lista.

No lo he probado pero básicamente sería asi:

Código:
widgets.HBox([[Ahri, YoRHA], [Ahri2, YoRHA2], [Ahri3, YoRHA3], [Ahri4, YoRHA4], [Ahri5, YoRHA5]])

Nos comentas que tal.


Saludos


En línea

M401

Desconectado Desconectado

Mensajes: 119


:$


Ver Perfil
Re: [Python] Hay alguna forma de automatizar este proceso de Ipywidgets? (Colab)
« Respuesta #2 en: 22 Febrero 2023, 02:54 am »

  Hola, disculpa la demora, muy ocupado con las tareas para mañana xd.

  Probé hacer lo que me dijiste y aunque me llevó mucho tiempo encontrar la manera de hacerlo, si funciona pero ahora me ocurre otro problema y parece más dificil que el anterior lol. Ahora pasa que los botones se colocan uno al lado del otro (Y supongamos quiero poner unos 50 botones), Entonces no podré ver ni siquiera sus nombres de lo apretados que estarían uno al lado del otro. No hay una manera de que al llegar a cierta cantidad en una linea horizontal, se pase a la proxima linea?

Código que llevo:
Código:
import ipywidgets as widgets

diccionario = {
    "Ahri":{"Display":"Ahri","URL":"XD","Button":"warning"},
    "Kindred":{"Display":"Kindred","URL":"XD","Button":"danger"},
    "Annie":{"Display":"Annie","URL":"XD","Button":"primary"},
    "Ahri2":{"Display":"Ahri","URL":"XD","Button":"warning"},
    "Kindred2":{"Display":"Kindred","URL":"XD","Button":"danger"},
    "Annie2":{"Display":"Annie","URL":"XD","Button":"primary"},
    "Ahri3":{"Display":"Ahri","URL":"XD","Button":"warning"},
    "Kindred3":{"Display":"Kindred","URL":"XD","Button":"danger"},
    "Annie3":{"Display":"Annie","URL":"XD","Button":"primary"},
    "Ahri4":{"Display":"Ahri","URL":"XD","Button":"warning"},
    "Kindred4":{"Display":"Kindred","URL":"XD","Button":"danger"},
    "Annie4":{"Display":"Annie","URL":"XD","Button":"primary"},
   
}

def makeadownloadbutton(key, description, url, mcolor):
  globals()[key] = widgets.ToggleButton(
    value=False,
    description=description,
    disabled=False,
    button_style=mcolor, # 'success', 'info', 'warning', 'danger' or ''
    tooltip='Download '+description,
    icon='user' # (FontAwesome names without the `fa-` prefix)
  )
  return

for personaje in diccionario:
  semidict = diccionario[personaje]
  global salida
  salida = dict(semidict)
  makeadownloadbutton(personaje, salida["Display"], salida["URL"], salida["Button"])


botones = widgets.HBox(children=[globals()[personaje] for personaje in diccionario])
display(botones)
En línea

Pero aunque los que sepan me digan que no, yo sé muy bien que existe el lado oscuro del sol. – El lado soleado de la calle
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines