tui

package module
v1.0.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 30, 2026 License: MIT Imports: 15 Imported by: 0

README

go-tui: Text User Interface на Go

Go version

Обзор

Лёгкая библиотека для TUI на Golang. Умеет:

  • Создавать надписи
  • Создавать кнопки и настраивать
  • Обрабатывать нажатия клавиатуры
  • Красить текст

Установка

go get -u github.com/romanSPB15/go-tui

Пример использования

package main

import (
	"github.com/eiannone/keyboard"
	"github.com/romanSPB15/go-tui"
)

func main() {
	a := tui.NewApp()
	a.AddComponents(tui.NewStaticLabel("Привет, Go!"))
	btn := tui.NewButton("Нажми ↑", keyboard.KeyArrowUp)
	btn.OnClick = a.Quit
	a.AddComponents(btn)
	a.Run()
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func EnableANSI

func EnableANSI()

Включает поддержку ANSI в терминале в случае если нет

Types

type App

type App interface {
	Components() []Component
	Redraw()
	RedrawComponent(int)
	AddComponents(...Component)
	Clear()
	Run()
	Quit()
	OnQuit() <-chan struct{}

	Window() Window

	AddKeyHandler(key keyboard.Key, h func())

	// Встроенное логирование.
	LogInfo(message string, args ...any)
	LogFatal(message string, args ...any)
}

Объект приложения

func NewApp

func NewApp() App

Метод создаёт объект приложения без логирования.

func NewDebugApp

func NewDebugApp() App

Метод создаёт объект приложения без логирования.

type Button

type Button struct {
	OnClick func()
	Component
	// contains filtered or unexported fields
}

Объект кнопки, нажимающейся от нажатия её клавиши

func NewButton

func NewButton(text string, key keyboard.Key) *Button

Создаёт tui.Button

type Color

type Color int

Цвет

const (
	Black Color = iota + 30
	Red
	Green
	Yellow
	Blue
	Magenta
	Cyan
	White
)

Обычные цвета

const (
	BrightBlack Color = iota + 90
	BrightRed
	BrightGreen
	BrightYellow
	BrightBlue
	BrightMagenta
	BrightCyan
	BrightWhite
)

Яркие цвета

type Component

type Component interface {
	MaxWidth() int
	DisplayMode() DisplayMode
	// contains filtered or unexported methods
}

Объект компонента приложения.

func NewLine

func NewLine() Component

Создаёт компонент, переносящий следующие на новую строку

func Spaser

func Spaser() Component

Создаёт компонент, занимающий всю строку

type DisplayMode

type DisplayMode int
const (
	DisplayInline  DisplayMode = iota // В одну строку
	DisplayBlock                      // На отдельной строке
	DisplayNewLine                    // Перенос строки
)

type Label

type Label struct {
	Text string
	// contains filtered or unexported fields
}

Текст. Может быть покрашен

func NewDynamicLabel

func NewDynamicLabel(txt string, maxLength int) *Label

Создание объекта текста с возможностью изменения. maxLength это место, зарезервированное под метку в символах

func NewStaticLabel

func NewStaticLabel(txt string) *Label

Создание объекта текста без возможности изменения.

func (*Label) Bold

func (lbl *Label) Bold() *Label

Сделать жирным.

func (*Label) Colorize

func (lbl *Label) Colorize(clr Color) *Label

Окрасить Label. Возвращает тот же объект.

func (*Label) DisplayMode

func (lbl *Label) DisplayMode() DisplayMode

Реализация tui.Component

func (*Label) Italic

func (lbl *Label) Italic() *Label

Сделать курсивом.

func (*Label) MaxWidth

func (lbl *Label) MaxWidth() int

Реализация tui.Component

func (*Label) Reverse

func (lbl *Label) Reverse() *Label

Реверсировать цвет.

func (*Label) Underline

func (lbl *Label) Underline() *Label

Подчеркнуть.

type Window

type Window interface {
	Width() int  // Ширина окна в символах
	Height() int // Высота окна в символах
}

Объект окна приложения

Directories

Path Synopsis
examples
simple command
keyboard module

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL