Maison > développement back-end > Golang > le corps du texte

GoLang : couleur de la bordure gocui

WBOY
Libérer: 2024-02-13 23:54:09
avant
954 Les gens l'ont consulté

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
Copier après la connexion

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
}
Copier après la connexion

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
Copier après la connexion

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
    ...
    ...
Copier après la connexion

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!

Étiquettes associées:
source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal