Maison  >  Article  >  développement back-end  >  GoLang : couleur de la bordure gocui

GoLang : couleur de la bordure gocui

WBOY
WBOYavant
2024-02-13 23:54:09885parcourir

GoLang : couleur de la bordure gocui

L'éditeur php Xiaoxin vous présente le paramètre de couleur de bordure gocui dans GoLang. gocui est une puissante bibliothèque de langage Go permettant de créer des applications interactives avec des interfaces de ligne de commande. Dans gocui, vous pouvez augmenter la beauté et la lisibilité de l'interface en définissant la couleur de la bordure. Avec de simples modifications de code, vous pouvez ajouter des couleurs personnalisées aux bordures de l'interface pour rendre votre application plus attrayante. Ensuite, apprenons comment utiliser la bibliothèque gocui dans GoLang pour définir la couleur de la bordure !

Contenu de la question

Il y a un problème avec le robot à intelligence artificielle, alors je demande ici :

J'ai ce code, il n'affiche que deux fenêtres et au lieu de background, je veux que la border soit verte.

J'ai essayé :

g.highlight = true

Chaque document ne fonctionne toujours pas.

Voici mon code complet :

package main

import (
    // "fmt"
    "log"

    "github.com/jroimartin/gocui"
)

func main() {
    // Create a new gocui view
    g, err := gocui.NewGui(gocui.OutputNormal)
    if err != nil {
        log.Panicln(err)
    }
    defer g.Close()

    g.SetManagerFunc(layout)

    if err := g.SetKeybinding("", 'q', gocui.ModNone, quit); err != nil {
        log.Panicln(err)
    }

    if err := g.SetKeybinding("", '1', gocui.ModNone, view1); err != nil {
        log.Panicln(err)
    }

    if err := g.SetKeybinding("", '2', gocui.ModNone, view2); err != nil {
        log.Panicln(err)
    }

    if err := g.MainLoop(); err != nil && err != gocui.ErrQuit {
        log.Panicln(err)
    }
}

func updateView(g *gocui.Gui, v *gocui.View) error {
    // Check if the view is active
    if v != nil && v == g.CurrentView() {
        // If the view is active, set its background color to yellow
        v.BgColor = gocui.ColorYellow
    } else {
        // If the view is not active, set its background color to default (nothing)
        v.BgColor = gocui.ColorDefault
    }

    return nil
}

func layout(g *gocui.Gui) error {
    // maxX, maxY := g.Size()

    g.Highlight = true

    // Create a new view with the name "myView"
    if v, err := g.SetView("view1", 0, 0, 20, 10); err != nil {
        if err != gocui.ErrUnknownView {
            log.Panicln(err)
        }

        // Set the default background color of the view to nothing
        v.BgColor = gocui.ColorDefault
        v.Title = "View 1"
        v.Wrap = false
        // fmt.Fprintln(v, "View 1")
    }

    // Set a second view with the name "myOtherView"
    if v, err := g.SetView("view2", 25, 0, 45, 10); err != nil {
        if err != gocui.ErrUnknownView {
            log.Panicln(err)
        }

        // Set the default background color of the view to nothing
        v.BgColor = gocui.ColorDefault
        v.Title = "View 2"
        v.Wrap = false
        // fmt.Fprintln(v, "View 2")
    }

    return nil
}

func view1(g *gocui.Gui, v *gocui.View) error {
    if _, err := g.SetCurrentView("view1"); err != nil {
        return err
    }

    updateHighlighting(g, v)

    return nil
}

func view2(g *gocui.Gui, v *gocui.View) error {
    if _, err := g.SetCurrentView("view2"); err != nil {
        return err
    }

    updateHighlighting(g, v)

    return nil
}

func updateHighlighting(g *gocui.Gui, v *gocui.View) error {

    current := g.CurrentView()

    for _, view := range g.Views() {
        if view == current {
            current.BgColor = gocui.ColorGreen
        } else {
            view.BgColor = gocui.ColorDefault
        }
    }

    return nil
}

func quit(g *gocui.Gui, v *gocui.View) error {
    return gocui.ErrQuit
}

Solution

view 的框架由呈现该框架的 gui 处理。您已将 gui 的突出显示设置为 true,但未设置 selbgcolorselfgcolor.

De https://pkg.go.dev/github.com/ jroimartin/gocui#gui :

// selbgcolor and selfgcolor allow to configure the background and
    // foreground colors of the frame of the current view.
    selbgcolor, selfgcolor attribute

    // if highlight is true, sel{bg,fg}colors will be used to draw the
    // frame of the current view.
    highlight bool

Ajoutez g.selfgcolor = gocui.colorgreen en modifiant le début de la mise en page comme suit :

func layout(g *gocui.Gui) error {
    // maxX, maxY := g.Size()

    g.Highlight = true
    g.SelFgColor = gocui.ColorGreen
    ...
    ...

Vous obtiendrez alors une bordure verte sur fond noir :

Si vous ne souhaitez pas que l'arrière-plan devienne également vert, supprimez cette ligne :

current.bgcolor = gocui.colorgreen

C'est un peu déroutant au début car la propriété viewgui 都有 selfgcolor selbgcolorhighlight,但是 view contrôle le texte sélectionné dans la vue, pas les bordures de la vue actuelle dans l'interface graphique.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer