我想在tcell中获取输入。我正在编写一个文本编辑器,并且想要一个像vim这样的命令提示符。我尝试使用fmt包,但是fmt.Scan和fmt.Scanf无法正常工作(以我为例)。

编辑:

好的,现在我可以输入了,但是如何与if一起使用呢?我知道以图形方式转换符文,但是这不适用于if。有任何想法吗?

func (cmd *Cmd) HandleEvent(event tcell.Event) {
    e.screen.Clear()

    for{
        e.screen.Show()

        event := e.screen.PollEvent()
        style := tcell.StyleDefault.Foreground(tcell.ColorWhite).Background(tcell.ColorBlack)

        switch event := event.(type) {
            case *tcell.EventKey:
                r := event.Rune()

                e.screen.SetContent(8, 40, r, nil, style)
        }
    }
}

最佳答案

来自tcell的mouse.go演示可能对您最有用:https://github.com/gdamore/tcell/blob/master/_demos/mouse.go

tcell似乎使用事件来记录键盘和鼠标输入,例如这里s.SetContent()用于显示ev.Rune(),它是已从鼠标/键盘输入演示中按下的键:

        case *tcell.EventKey:
            s.SetContent(w-2, h-2, ev.Rune(), nil, st)
            s.SetContent(w-1, h-1, 'K', nil, st)
            if ev.Key() == tcell.KeyEscape {
                ecnt++
                if ecnt > 1 {
                    s.Fini()
                    os.Exit(0)
                }
            } else if ev.Key() == tcell.KeyCtrlL {
                s.Sync()
            } else {
                ecnt = 0
                if ev.Rune() == 'C' || ev.Rune() == 'c' {
                    s.Clear()
                }
            }
            lks = ev.Name()

https://github.com/gdamore/tcell/blob/master/_demos/mouse.go#L161

关于go - 如何在tcell中获取输入,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/61120702/

10-11 01:34