Skip to content
On this page

Window 窗口处理

使用App.NewWindow()创建窗体,展示使用Show()函数。fyne.Window提供了方法ShowAndRun()允许你显示窗体并同事运行应用。

默认窗体大小就是其Content面板上元素的大小。你可以使用Window.Resize()方法设置窗体大小,传入一个宽和高,这个宽高不会受设备实际像素影响。例如让一个窗口显示默认正方形

go
w.Resize(fyne.NewSize(100, 100))

请注意,桌面环境可能存在导致窗口小于请求的限制。移动设备通常会忽略窗体大小,因为移动设备只能以全屏显示。

如果你想显示两个窗口你只能调用Show()函数,它可以有用的区分Window.Show()App.Run();如果你想在程序启动之后开启多窗口,下面的例子会告诉你如何加载两个窗口

go
package main

import (
	"fyne.io/fyne/v2"
	"fyne.io/fyne/v2/app"
	"fyne.io/fyne/v2/widget"
)

func main() {
	a := app.New()
	w := a.NewWindow("Hello World")

	w.SetContent(widget.NewLabel("Hello World!"))
	w.Show()

	w2 := a.NewWindow("Larger")
	w2.SetContent(widget.NewLabel("More content"))
	w2.Resize(fyne.NewSize(100, 100))
	w2.Show()

	a.Run()
}

当两个窗口都关闭的时候,程序就退出了,如果你的程序排设定成其中一个是主界面,而其他窗口是辅助窗体,你可以将这个窗口设置为主界面,这样当该主窗口关闭时,应用程序就会退出。这些只需要你通过WindowSetMaster()函数

你可以随时创建窗口,我们更改代码如下,以便第二个窗口的内容是一个打开新窗口的按钮。你可以从更复杂的工作流加载窗口,但是请注意,新的窗口通常都是出现在当前活动窗口的上方。

go
w2.SetContent(widget.NewButton("Open new", func() {
		w3 := a.NewWindow("Third")
		w3.SetContent(widget.NewLabel("Third"))
		w3.Show()
	}))