tview

用 Go 编写的基于终端的用户界面的丰富的交互式 widget。「Rich interactive widgets for terminal-based UIs written in Go」

Github stars Tracking Chart

终端用户界面的丰富的交互式 Widget

该 Go 包提供了基于终端的用户界面所需的常用组件。

其中,这些组件有:

  • 输入表单(包括输入/密码字段、下拉选择、复选框和按钮)。
  • 可导航的多色文本视图
  • 先进的可导航的表格视图
  • 灵活的树形视图
  • 可选择的名单
  • 网格、Flexbox 和页面布局
  • 模态信息窗口
  • 应用包装器

它们有很多定制选项,可以很容易地扩展到适合你的需求。

安装

go get github.com/rivo/tview

Hello World

这个基本示例创建了一个名为 Hello, World!并显示在终端上

package main

import (
    "github.com/rivo/tview"
)

func main() {
    box := tview.NewBox().SetBorder(true).SetTitle("Hello, world!")
    if err := tview.NewApplication().SetRoot(box, true).Run(); err != nil {
        panic(err)
    }
}

查看 GitHub Wiki 上的更多例子和截图。或者试试 "demo" 子目录下的例子。

如果想看这个软件包的演示,请编译并运行 "demo/presentation" 子目录中的程序。

使用 tview 的项目

文档

参考 https://pkg.go.dev/github.com/rivo/tview 获取软件包的文档。

依赖性

这个软件包基于 github.com/gdamore/tcell(及其依赖项)以及 github.com/rivo/uniseg

您的反馈

在 GitHub 上添加您的问题。如果您有任何问题,请随时联系我们。


Main metrics

Overview
Name With Ownerrivo/tview
Primary LanguageGo
Program languageGo (Language Count: 1)
PlatformLinux, Mac, Windows
License:MIT License
所有者活动
Created At2017-12-15 14:28:14
Pushed At2025-05-01 11:34:34
Last Commit At2025-05-01 13:34:34
Release Count0
用户参与
Stargazers Count11.9k
Watchers Count122
Fork Count604
Commits Count797
Has Issues Enabled
Issues Count795
Issue Open Count77
Pull Requests Count128
Pull Requests Open Count48
Pull Requests Close Count120
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private

Rich Interactive Widgets for Terminal UIs

Godoc Reference
Go Report

This Go package provides commonly needed components for terminal based user interfaces.

Screenshot

Among these components are:

  • Input forms (include input/password fields, drop-down selections, checkboxes, and buttons)
  • Navigable multi-color text views
  • Sophisticated navigable table views
  • Flexible tree views
  • Selectable lists
  • Grid, Flexbox and page layouts
  • Modal message windows
  • An application wrapper

They come with lots of customization options and can be easily extended to fit your needs.

Installation

go get github.com/rivo/tview

Hello World

This basic example creates a box titled "Hello, World!" and displays it in your terminal:

package main

import (
	"github.com/rivo/tview"
)

func main() {
	box := tview.NewBox().SetBorder(true).SetTitle("Hello, world!")
	if err := tview.NewApplication().SetRoot(box, true).Run(); err != nil {
		panic(err)
	}
}

Check out the GitHub Wiki for more examples along with screenshots. Or try the examples in the "demos" subdirectory.

For a presentation highlighting this package, compile and run the program found in the "demos/presentation" subdirectory.

Documentation

Refer to https://godoc.org/github.com/rivo/tview for the package's documentation.

Dependencies

This package is based on github.com/gdamore/tcell (and its dependencies) as well as on github.com/rivo/uniseg.

Your Feedback

Add your issue here on GitHub. Feel free to get in touch if you have any questions.

Version History

(There are no corresponding tags in the project. I only keep such a history in this README.)

  • v0.20 (2019-07-08)
    • Added autocomplete functionality to InputField.
  • v0.19 (2018-10-28)
    • Added QueueUpdate() and QueueEvent() to Application to help with modifications to primitives from goroutines.
  • v0.18 (2018-10-18)
    • InputField elements can now be navigated freely.
  • v0.17 (2018-06-20)
    • Added TreeView.
  • v0.15 (2018-05-02)
    • Flex and Grid don't clear their background per default, thus allowing for custom modals. See the Wiki for an example.
  • v0.14 (2018-04-13)
    • Added an Escape() function which keep strings like color or region tags from being recognized as such.
    • Added ANSIWriter() and TranslateANSI() which convert ANSI escape sequences to tview color tags.
  • v0.13 (2018-04-01)
    • Added background colors and text attributes to color tags.
  • v0.12 (2018-03-13)
    • Added "suspended mode" to Application.
  • v0.11 (2018-03-02)
    • Added a RemoveItem() function to Grid and Flex.
  • v0.10 (2018-02-22)
    • Direct access to the screen object through callback in Box (i.e. for all primitives).
  • v0.9 (2018-02-20)
    • Introduced Grid layout.
    • Direct access to the screen object through callbacks in Application.
  • v0.8 (2018-01-17)
    • Color tags can now be used almost everywhere.
  • v0.7 (2018-01-16)
    • Forms can now also have a horizontal layout.
  • v0.6 (2018-01-14)
    • All primitives can now intercept all key events when they have focus.
    • Key events can also be intercepted globally (changed to a more general, consistent handling)
  • v0.5 (2018-01-13)
    • TextView now has word wrapping and text alignment
  • v0.4 (2018-01-12)
    • TextView now accepts color tags with any W3C color (including RGB hex values).
    • Support for wide unicode characters.
  • v0.3 (2018-01-11)
    • Added masking to InputField and password entry to Form.
  • v0.2 (2018-01-10)
    • Added Styles variable with default colors for primitives.
    • Completed some missing InputField functions.
  • v0.1 (2018-01-06)
    • First Release.