Go语言 新建多行条目():如何滚动到底部?

7cjasjjr  于 2023-02-20  发布在  Go
关注(0)|答案(1)|浏览(198)

我在GUI应用程序中使用widget.NewMultiLineEntry()创建了一个多行文本输入小部件。我正在寻找一种方法,每当添加新内容时,自动或手动滚动到小部件的底部。我如何才能实现这种行为?这可能吗?

logsBox := widget.NewMultiLineEntry()
logsBox.Wrapping = fyne.TextTruncate
logsBox.SetMinRowsVisible(3)
logsBox.SetPlaceHolder("Waiting for logs...")
logsBox.OnChanged = func(newMsg string) {
    // ...
}

logsBox.SetText("Row 1\nRow 2\nRow 3\nRow 4")
// TODO: Scroll to the bottom manually somehow?
n9vozmp4

n9vozmp41#

看起来我们可以使用CursorRow属性来解决这个问题:

focusedItem := logsWindow.Canvas().Focused()
// If the user is not focused on the text area then scroll to the end
if focusedItem == nil || focusedItem != logsBox {
    logsBox.CursorRow = len(logsBox.Text) - 1 // Sets the cursor to the end
}

相关问题