es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo obtener el texto de un botón de Kivy?

Estoy tratando de construir una GUI simple para una “aplicación de votación” donde al hacer clic en el botón con el ID del candidato, se agregará +1 en el valor de la clave ID dentro de un diccionario. (básicamente contar votos al hacer clic)

import kivy
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button

CANDIDATOS = {“T1031″ : 0,”T2112” : 0, “T4561” : 0}

class MyLayout(BoxLayout):
orientation = “Vertical”
def init(self, **kwargs):
super(MyLayout, self).__init__(kwargs)
for i in CANDIDATOS:
candidato = Button(text=i, on_press=self.button_clicked)
self.add_widget(candidato)

def button_clicked(self, obj):
print(“botón presionado”, obj)

class MyApp(App):
def build(self):
return MyLayout()

if name == “main“:
MyApp().run()

¿Cómo puedo tomar el texto que se muestra en el botón?
(También, si alguno de ustedes sabe… ¿cómo puedo poner un ID en los botones? Traté de escribir “id = i” pero la GUI ni siquiera se inicia cuando hago eso)

¡Muchas gracias de antemano!

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para capturar el texto mostrado en el botón, se puede acceder al atributo “text” del objeto botón que activó el evento. En el método “button_clicked”, puede agregar la siguiente línea para obtener el texto:

    def button_clicked(self, obj):
        button_text = obj.text
        print("botón presionado", button_text)
    

    Para agregar un ID a los botones, se puede usar el atributo “id” del widget Button. Sin embargo, se recomienda utilizar un identificador único, diferente del texto que se muestra en el botón, ya que puede haber conflictos. Puede modificar el bucle for en el método “init” de MyLayout para agregar el atributo “id” de esta manera:

    def __init__(self, **kwargs):
        super(MyLayout, self).__init__(**kwargs)
        for i in CANDIDATES:
            candidate = Button(text=i, id=i, on_press=self.button_clicked)
            self.add_widget(candidate)
    

    En este caso, el atributo “id” se establece en el mismo valor que la clave del diccionario para cada candidato.

Comments are closed.