I am new to programming and i want to develop a application but i need show to users very large text in my application. I am not sure widget.NewRichTextWithText() is for this purpose. This code working as i expected.
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()
}
But this one does not work.
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()
}
Becuase the " \n " showing as invalid character instead of new line when i run the application. My aim is showing very large text "top to bottom scrollable" with canvas.NewText() but " \n " character does not work. Instead of top to bottom scrollable showing text it is printing this as this?this?this?
CodePudding user response:
Use widget.Label
to display "simple" texts:
text := widget.NewLabel(strings.Repeat("this\n", 100))
Note that widget.Label
can be "styled" (e.g. you can make it italic or bold).
widget.RichText
should be used if you want to display text that has parts (called segments) with different styles and formatting. widget.Label
can only be styled as a whole.
CodePudding user response:
The canvas.Text
does not do smart text parsing, so you would have to do that yourself.
In general the widget
package has smart widgets that do this all for you, and the canvas
package is for lower level drawing normally used to build other widgets.