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.

Botón con fondo de color.

Estoy usando fyne. Estoy trabajando en un juego (con botones obviamente). Me gustaría saber si hay alguna forma de cambiar el fondo del botón. Sé que hay botones con imágenes en lugar de texto, pero solo me gustaría cambiar el color de fondo del botón.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Sí, definitivamente es posible cambiar el color de fondo de un botón en una aplicación Fyne. Puede usar el método SetIcon con la función canvas.NewRectangle para crear una imagen de color sólido que coincida con el color de fondo deseado.

    Aquí tiene un ejemplo de cómo puede hacerlo:

    import (
        "fyne.io/fyne"
        "fyne.io/fyne/canvas"
        "fyne.io/fyne/widget"
    )
    
    // Cree un nuevo botón con fondo rojo
    redButton := widget.NewButtonWithIcon("", canvas.NewRectangle(&color.NRGBA{R: 255, G: 0, B: 0, A: 255}))
    
    // Cree un nuevo botón con fondo azul
    blueButton := widget.NewButtonWithIcon("", canvas.NewRectangle(&color.NRGBA{R: 0, G: 0, B: 255, A: 255}))
    

    Este código crea dos botones con fondos de diferentes colores sólidos. Puede ajustar los valores en la estructura color.NRGBA para crear el color que desee.

    Alternativamente, puede usar un widget personalizado o modificar el widget widget.Button existente para anular el tema:

    type customButton struct {
        *widget.Button
    }
    
    func NewCustomButton(text string, bgColor fyne.Color, tapped func()) *customButton {
        cb := &customButton{Button: widget.NewButton(tapped)}
        bgColor = bgColor.ToStandardColor()
        bgc := canvas.NewRectangle(&bgColor)
        fgc := canvas.NewText(text, theme.TextColor())
        cb.SetIcon(bgc, fgc)
        cb.Resize(bgWidth, bgHeight) // Suponiendo que estos están definidos de forma global
        return cb
    }
    
    myButton := NewCustomButton("Mi Botón", fyne.NewStaticColor(100, 200, 100), func() {
        // lo que sea
    })
    

    Aquí estamos creando un widget.Button personalizado que acepta un color de fondo en el constructor. Luego lo usamos para crear una imagen de fondo de color sólido para el botón, junto con el color de texto predeterminado para la imagen de primer plano. Se llama al método SetIcon con ambas imágenes para formar el botón final.

Comments are closed.