【问题标题】:How to make the text scrollable with canvas.NewText() with fyne Go如何使用 fyne Go 使用 canvas.NewText() 使文本可滚动
【发布时间】:2022-11-21 02:45:17
【问题描述】:

我是编程新手,我想开发一个应用程序,但我需要在我的应用程序中向用户显示非常大的文本。 我不确定 widget.NewRichTextWithText() 是否用于此目的。 此代码按预期工作。

package main

import (
    "strings"

    "fyne.io/fyne/v2"
    "fyne.io/fyne/v2/app"
    "fyne.io/fyne/v2/container"
    "fyne.io/fyne/v2/widget"
)

func main() {
    a := app.New()
    
    w := a.NewWindow("Some Practice")
    
    w.Resize(fyne.NewSize(400, 400))
    
    text := widget.NewRichTextWithText((strings.Repeat("this\n", 100)))
    
    c := container.NewMax(container.NewVScroll(text))
    
    w.SetContent(c)
    
    w.ShowAndRun()
}

但是这个不起作用。

package main

import (
    "image/color"
    "strings"

    "fyne.io/fyne/v2"
    "fyne.io/fyne/v2/app"
    "fyne.io/fyne/v2/canvas"
    "fyne.io/fyne/v2/container"
)

func main() {
    a := app.New()
    
    w := a.NewWindow("Some Practice")
    
    w.Resize(fyne.NewSize(400, 400))
    
    text := canvas.NewText(strings.Repeat("this\n", 100), color.White)
    
    c := container.NewMax(container.NewVScroll(text))
    
    w.SetContent(c)
    
    w.ShowAndRun()
}

因为当我运行应用程序时,“\n”显示为无效字符而不是新行。 我的目标是使用 canvas.NewText() 显示非常大的文本“从上到下可滚动”,但“\n”字符不起作用。它不是从上到下滚动显示文本,而是将其打印为 this?this?this?

【问题讨论】:

    标签: go fyne


    【解决方案1】:

    使用 widget.Label 显示“简单”文本:

    text := widget.NewLabel(strings.Repeat("this
    ", 100))
    

    请注意,widget.Label 可以是“样式化的”(例如,您可以制作它斜体或者大胆的).

    widget.RichText 如果要显示具有不同样式和格式的部分(称为段)的文本,则应使用 widget.RichTextwidget.Label 只能做整体样式。

    【讨论】:

    • 我应该使用 widget.NewLabel() 即使我向用户显示大约 200 多个单词的文本吗?
    • @BrokenArmor 如果您不需要对文本的不同部分进行不同的格式化,那很好。
    猜你喜欢
    • 1970-01-01
    • 2019-06-18
    • 1970-01-01
    • 2015-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多