登录
首页 >  Golang >  Go问答

我无法使用 tview 更新文本

来源:stackoverflow

时间:2024-03-17 08:57:27 356浏览 收藏

在使用 Go 语言的 tview 库时,更新终端上文本时遇到问题。代码尝试使用 WriteMessage() 函数在终端上显示 "hoge",但未能成功。原因是 run() 函数在应用程序显式停止之前不会返回,导致 WriteMessage() 函数永远不会被执行。因此,为了在终端上显示 "hoge",需要在 run() 之前调用 WriteMessage() 函数。

问题内容

我在 go 语言中使用 tview。

我想使用下面的代码在终端上显示“hoge”,但它没有显示。

package main

import (
    "fmt"

    "github.com/rivo/tview"
)

func main() {
    tui := newTui()
    tui.Run()
    tui.WriteMessage("hoge")
}

type Tui struct {
    app  *tview.Application
    text *tview.TextView
}

func (t *Tui) Run() {
    t.app.Run()
}

func (t *Tui) WriteMessage(message string) {
    fmt.Fprintln(t.text, message)
}

func newTui() *Tui {
    text := tview.NewTextView()

    app := tview.NewApplication()
    app.SetRoot(text, true)

    text.SetChangedFunc(func() { app.Draw() })

    tui := &Tui{app: app, text: text}

    return tui
}

我不想更新 newtui() 函数中的文本。

如何让它显示出来?


正确答案


func (*Application) Run()

run 启动应用程序,从而启动事件循环。这个功能 当 stop() 被调用时返回。

即程序中的语句 tui.writemessage("hoge") 永远不会到达,因为 run() 在显式停止之前不会返回。因此,要查看终端中打印的 hoge,您必须在 run() 之前调用 tui.writemessage("hoge")

func main() {
    tui := newTui()
    tui.WriteMessage("hoge")
    tui.Run()
}

今天关于《我无法使用 tview 更新文本》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>