使用“termui”的golang终端仪表板

时间:2017-07-11 06:00:40

标签: go

我正在努力在go代码中绘制终端本身的图形。我在golang中找到了这个(https://github.com/gizak/termui)。并使用此(https://github.com/gizak/termui/blob/master/_example/gauge.go)在我的代码中绘制图形。

问题在于,正如我们在代码(https://github.com/gizak/termui/blob/master/_example/gauge.go)中看到的那样,它们将g0,g1,g2,g3一起传递到最后“termui.Render(g0,g1,g2,g3, G4)”。 在我的情况下,我不知道手绘多少量规,所以我使用一个列表存储量规对象,然后尝试传递列表进行渲染。

    termui.Render(chartList...)

但它只创造了一个标尺。

这就是我在列表中追加元素的方式。

   for i := 0; i < 5; i++ {
        g0 := termui.NewGauge()
        g0.Percent = i
        g0.Width = 50
        g0.Height = 3
        g0.BorderLabel = "Slim Gauge"
        chartList = append(chartList, g0)
    }

我得到的只是i = 4的衡量标准。当我在做termui.Render(chartList ...) 难道我做错了什么? PS - 我根据我在这个问题中得到的答案修改了问题。

1 个答案:

答案 0 :(得分:1)

以下是对Variadic Functions

的好读

查看Render的函数签名https://github.com/gizak/termui/blob/master/render.go#L161

func Render(bs ...Bufferer) {

您需要做的就是

termui.Render(chatList...)

假设chartList[]Bufferer

修改
你只看到一个,因为他们堆叠在一个彼此之上。要看到这个添加

g0.Height = 3
g0.Y = i * g0.Height            // <-- add this line
g0.BorderLabel = "Slim Gauge" 

通过对项目的快速回顾,似乎有一些自动排列方法与创建行(可能还有列)有关。所以你可能想要探索它,或者你需要手动定位你的元素。

enter image description here