0

我正在尝试使用小部件来显示随着添加更多文本而垂直滚动的文本。

不过,我无法弄清楚如何让文本滚动。我最接近的是启用滚动,但是您必须在附加文本时手动向下滚动。我还没有找到“锁定”调整大小的方法;如果不将 TextGrid 放入滚动容器中,则应用程序的大小似乎会跳到监视器边界之外。

有没有办法让 TextGrid 自动滚动?

    appClient := app.New()
    winWindow := appClient.NewWindow("Test")

    txtEntry := widget.NewEntry()
    txtStatus := widget.NewLabel("Status")
    txtResults := widget.NewTextGrid()
    txtResults.ShowLineNumbers = true

    btnQuit := widget.NewButton("Quit", func() {
        appClient.Quit()
    })
    btnQuit.Resize(fyne.NewSize(300, 300))

    cntScrolling := container.NewScroll(txtResults)
    cntButtons := container.NewGridWithColumns(4, layout.NewSpacer(), layout.NewSpacer(), layout.NewSpacer(), btnQuit)
    cntContent := container.NewGridWithRows(4, txtEntry, txtStatus, cntScrolling, cntButtons)

    winWindow.Resize(fyne.NewSize(1200, 600))
    winWindow.SetContent(cntContent)

    go func() {
        for {
            select {
            case strMessage := <-chnSendMessageToClientWindow:
                txtResults.SetText(strings.TrimPrefix(txtResults.Text()+"\n"+strMessage, "\n"))
                cntScrolling.Refresh()
            }
        }
    }()

    winWindow.ShowAndRun()
4

1 回答 1

1

您可能正在寻找cntScrolling.ScrollToBottom() 当您将项目包装在滚动容器中时,添加新内容时无法自动向下或向右滚动,但每次添加内容时该行都会这样做。

我还没有找到“锁定”调整大小的方法

fyne 中的项目通常是最小尺寸(打包内容)或扩展以填充空间。在两者之间“锁定大小”是不明智的,因为这样 UI 就不能很好地跨屏幕和窗口大小进行缩放。

于 2021-10-23T18:16:14.960 回答