微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 CView 创建 TUI:网格并使部件不可选择

如何解决使用 CView 创建 TUI:网格并使部件不可选择

我正在使用 tslocum (https://code.rocketnine.space/tslocum/cview) 的 CView 库创建 TUI 应用程序,想知道是否有人知道如何处理这个问题。

我为动态布局创建了一个网格;顶部有一个“横幅”文本视图,顶部有一个标题显示屏的底部分为两部分;左侧是带有一些按钮的表单,右侧是带有一些解释性文本的文本视图。

如果左列被选中/聚焦,则使用鼠标(以及 tab 和 shift-tab)导航按钮有效。如果单击文本视图,它们将获得焦点,并且如何再次选择表单以使用键盘导航按钮并不明显。我不想完全禁用鼠标。

所以除非有另一种方法来处理它,有没有办法让表单成为唯一的可选项目,或者禁用文本视图获得焦点?或者将一个动作附加到网格中的文本视图,以便如果它们被选中,它会将选择移回表单?我一直在尝试在演示和扩展坞中找到解决方案,但我还没有找到有效的方法

这是我用来创建网格的内容

func ViewTaskChoose(app *cview.Application) *cview.Grid {

fmMenu := cview.NewForm()
tvHeader := cview.NewTextView()
grid := cview.NewGrid()
tvInfo := cview.NewTextView()

// Create the header with a title
tvHeader.SetTextAlign(cview.AlignCenter)
tvHeader.SetText("Fancy Application with a TUI Twist")
tvHeader.SetBorder(true)

// Create a text area for texty stuffs
tvInfo.SetTextAlign(cview.AlignLeft)
tvInfo.SetBorder(true)
tvInfo.SetText("Fancy texty stuff here")

// Format a menu area for buttons
fmMenu.SetTitle("Task Selection")
fmMenu.SetTitleAlign(cview.AlignLeft)
fmMenu.SetTitleColor(tcell.ColorYellow)
fmMenu.SetBorder(true)
fmMenu.SetHorizontal(true)

// Buttons to add
fmMenu.AddButton("Button 1",nil)
fmMenu.AddButton("Button 2",nil)
fmMenu.AddButton("Button 3",nil)
fmMenu.AddButton("Quit",func() {
    app.Stop()
})

// Define the grid and layout properties
grid.SetRows(4,0)
grid.SetColumns(30,0)
grid.SetBorders(false)
grid.SetBackgroundTransparent(true)

// Now compose the display
grid.AddItem(tvHeader,1,3,false)
grid.AddItem(tvInfo,2,false)
grid.AddItem(fmMenu,true)

return grid
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?