Fyne 系列 03:窗口、App 生命周期与事件
Fyne 程序从 app.New() 开始,到 ShowAndRun() 进入事件循环。理解这个结构后,多窗口、关闭事件、后台任务都会清楚很多。
App 和 Window
1 | a := app.New() |
app.App 表示整个应用,fyne.Window 表示一个窗口。一个应用可以创建多个窗口。
1 | second := a.NewWindow("第二个窗口") |
主窗口使用 ShowAndRun(),其他窗口通常使用 Show()。
设置关闭事件
窗口关闭前可以做一些清理工作:
1 | w.SetCloseIntercept(func() { |
这种写法适合在退出前提示保存配置、确认未完成任务等。
后台任务和界面更新
耗时操作不要直接放在按钮回调里阻塞界面。可以用 goroutine 执行后台任务,再回到主线程更新 UI。
1 | button := widget.NewButton("开始", func() { |
界面控件不是普通的并发数据结构,后台 goroutine 里直接改 UI 很容易出现不稳定问题。把 UI 更新集中放回主线程,是写 Fyne 程序时需要养成的习惯。
常见窗口设置
1 | w.Resize(fyne.NewSize(800, 500)) |
Resize 设置初始大小,CenterOnScreen 居中显示,SetFixedSize 可以限制窗口是否允许调整大小。
桌面工具通常建议允许调整大小,然后通过布局系统适配窗口变化。
评论
评论插件加载失败
正在加载评论插件