Heim >Backend-Entwicklung >Golang >GoLang: Gocui-Randfarbe

GoLang: Gocui-Randfarbe

WBOY
WBOYnach vorne
2024-02-13 23:54:09990Durchsuche

GoLang: Gocui-Randfarbe

Der PHP-Editor Xiaoxin stellt Ihnen die Einstellung der Gocui-Rahmenfarbe in GoLang vor. gocui ist eine leistungsstarke Go-Sprachbibliothek zum Erstellen interaktiver Anwendungen mit Befehlszeilenschnittstellen. In Gocui können Sie die Schönheit und Lesbarkeit der Benutzeroberfläche erhöhen, indem Sie die Rahmenfarbe festlegen. Mit einfachen Codeänderungen können Sie den Rändern der Benutzeroberfläche benutzerdefinierte Farben hinzufügen, um Ihre Anwendung attraktiver zu gestalten. Als nächstes lernen wir, wie man die Gocui-Bibliothek in GoLang verwendet, um die Rahmenfarbe festzulegen!

Frageninhalt

Es gibt ein Problem mit dem Roboter mit künstlicher Intelligenz, also frage ich hier:

Ich habe diesen Code, er gibt nur zwei Fenster aus und statt Hintergrund möchte ich, dass der Rand grün ist.

Ich habe es versucht:

g.highlight = true

Jedes Dokument funktioniert immer noch nicht.

Das ist mein vollständiger Code:

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
}

Lösung

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

Von 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

Fügen Sie g.selfgcolor = gocui.colorgreen hinzu, indem Sie den Anfang des Layouts wie folgt ändern:

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

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

Dann erhalten Sie einen grünen Rand auf schwarzem Hintergrund:

Wenn Sie nicht möchten, dass auch der Hintergrund grün wird, entfernen Sie diese Zeile:

current.bgcolor = gocui.colorgreen

Es ist zunächst etwas verwirrend, da die viewgui 都有 selfgcolor selbgcolorhighlight,但是 view-Eigenschaft den ausgewählten Text in der Ansicht steuert, nicht die Ränder der aktuellen Ansicht in der GUI.

Das obige ist der detaillierte Inhalt vonGoLang: Gocui-Randfarbe. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen