在 Fyne TextGrid 中自动滚动日志文本
Scrolling log text in a Fyne TextGrid automatically
我正在尝试使用一个小部件来显示文本,随着添加更多文本,该文本将垂直滚动。
不过,我不知道如何让文本滚动。我最接近的是启用滚动,但您必须在附加文本时手动向下滚动。我还没有找到“锁定”调整大小的方法;如果不将 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()
您可能正在寻找 cntScrolling.ScrollToBottom()
当您将项目包装在滚动容器中时,无法在添加新内容时自动向下或向右滚动,但每次添加内容时该行都会这样做。
I haven't found a way to "lock" resizing
fyne 中的项目通常是最小尺寸(打包内容)或扩展以填充 space。在两者之间的某处“锁定大小”是不明智的,因为这样 UI 不能很好地跨屏幕缩放和 window 大小。
我正在尝试使用一个小部件来显示文本,随着添加更多文本,该文本将垂直滚动。
不过,我不知道如何让文本滚动。我最接近的是启用滚动,但您必须在附加文本时手动向下滚动。我还没有找到“锁定”调整大小的方法;如果不将 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()
您可能正在寻找 cntScrolling.ScrollToBottom()
当您将项目包装在滚动容器中时,无法在添加新内容时自动向下或向右滚动,但每次添加内容时该行都会这样做。
I haven't found a way to "lock" resizing
fyne 中的项目通常是最小尺寸(打包内容)或扩展以填充 space。在两者之间的某处“锁定大小”是不明智的,因为这样 UI 不能很好地跨屏幕缩放和 window 大小。