我正在使用画布在窗口上绘制一条线,在第一次绘制之前更改其位置,但它不起作用。以下是代码:
package main
import (
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/app"
"fyne.io/fyne/v2/canvas"
"image/color"
)
func main() {
myApp := app.New()
w := myApp.NewWindow("Line")
line := canvas.NewLine(color.White)
line.StrokeWidth = 3
//line.Position1 = fyne.NewPos(10, 10) // Equally ineffective
//line.Position2 = fyne.NewPos(100, 100) // Equally ineffective
line.Move(fyne.NewPos(10, 10))
line.Resize(fyne.NewSize(100, 100))
w.SetContent(line)
w.Resize(fyne.NewSize(300, 300))
w.ShowAndRun()
}
预期的结果应该是这样的:
但在实践中,该职位仍然是默认职位:
但是,使用goroutine进行延迟修改时没有问题:
package main
import (
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/app"
"fyne.io/fyne/v2/canvas"
"image/color"
"time"
)
func main() {
myApp := app.New()
w := myApp.NewWindow("Line")
line := canvas.NewLine(color.White)
line.StrokeWidth = 3
w.SetContent(line)
w.Resize(fyne.NewSize(300, 300))
go func() {
time.Sleep(time.Second * 3) // After 3 seconds, the line successfully changed from the default position to the specified position
line.Move(fyne.NewPos(10, 10))
line.Resize(fyne.NewSize(100, 100))
}()
w.ShowAndRun()
}
我不知道这是Fyne的bug还是我使用它的方式。
我的目标是在第一次绘制窗口时在指定位置绘制线条。
注意:我使用Windows和go1.22
//对不起我的英语。