#926·tview

*.Box,SetMouseCapture() 会捕获所有鼠标事件,不仅仅是 Box 内的事件

作者: FJuedesOrcl创建于 2023年12月5日更新于 2026年8月7日

func main() { // Configure a status-line for debug output Status := tview.NewTextView().SetText("Statusline")

// Configure a Mouse-Capture function MouseCapture := func(action tview.MouseAction, event *tcell.EventMouse) (tview.MouseAction, *tcell.EventMouse) { // Print the Mouse-Action as a bitmap Output := fmt.Sprintf("MouseAction: %%%016b; ", action)

// Print the Mouse Buttons as bitmap
buttons := event.Buttons()
Output += fmt.Sprintf("MouseButtons: %%%016b; ", buttons)

// Print the modifiers as bitmap
modifiers := event.Modifiers()
Output += fmt.Sprintf("Modifier Keys: %%%016b; ", modifiers)

// Print the event-position
PosX, PosY := event.Position()
Output += fmt.Sprintf("PosX: %03d; PosY: %02d", PosX, PosY)

// "print" output into status-line
Status.SetText(Output)

return action, event

} // END MouseCapture

// Configure a table with selectable rows Panel := tview.NewTable() Panel.SetBorders(true) Panel.SetBorderColor(tcell.NewRGBColor(127, 127, 127)) Panel.SetSelectable(true, false) for row := 0; row < 13; row++ { for col := 0; col < 6; col++ { Panel.SetCell(row, col, tview.NewTableCell(fmt.Sprintf("row: %2d; col: %2d", row, col)).SetSelectable(true)) } // END for col } // End for row

// Configure a TreeView based menu RootNode := tview.NewTreeNode("ROOT").SetColor(tcell.NewRGBColor(255, 15, 15)).SetSelectable(true) for n := 0; n < 10; n++ { node := tview.NewTreeNode(fmt.Sprintf("Node: %d", n)).SetColor(tcell.NewRGBColor(15, 255, 15)).SetSelectable(true) } // END for n } // END main