2017-07-11 149 views
1

我正在從go code的內部繪製終端本身的圖形。我在golang中找到了這個(https://github.com/gizak/termui)。並用它(https://github.com/gizak/termui/blob/master/_example/gauge.go)在我的代碼中繪製圖形。golang使用「termui」的終端儀表板

問題是這樣的,我們可以在代碼(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 - 我根據我在這個問題中得到的答案修改了問題。

+0

能否打印'LEN(chartList)'你打電話之前'termui.Render',以確保它是預期的長度? – Adrian

回答

1

這裏是Variadic Functions

一個良好的閱讀看看渲染的函數簽名,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

+0

仍然只獲得一個值作爲輸出。 – supriya

+0

我得到的僅僅是列表的最後一個元素的輸出。將元素追加到列表中時,我在做什麼錯了? 我在我的問題中添加了代碼,請看看。 – supriya