如何在 Fyne 中将 window 调整为对话框大小
How to resize window to dialog size in Fyne
我正在使用 Go 的 Fyne 包。我想要做的就是显示一个对话框,并让 window 自动调整到对话框的最大尺寸。我已经浏览了文档并查看了示例,但我无法在任何地方找到它! window 始终为 0x0 像素。如果我调整 window 的大小,我可以看出对话框具有最大高度和宽度,但我似乎无法将其反馈到 window 的大小。这是我的代码:
import (
"fyne.io/fyne"
"fyne.io/fyne/app"
"fyne.io/fyne/dialog"
)
var myApp fyne.App
func main() {
myApp = app.New()
myWindow := myApp.NewWindow("test")
cnfm := dialog.NewConfirm("Test Dialog!", "Are you sure you want to interact with this test dialog?", loseCallback, myWindow)
cnfm.Show()
cnfm.Resize(cnfm.MaxSize())
myWindow.Show()
// uncomment to have a window greater than 0x0
//myWindow.Resize(fyne.NewSize(375, 180))
myApp.Run()
}
func loseCallback(yes bool) {
myApp.Quit()
}
这看起来很基本,但我就是找不到任何方法来实现它!我试过布局、容器等,但没有任何区别,window 始终为 0x0。非常感谢您对此提供帮助!
Fyne 并没有真正的 MaxSize 概念。有 MinSize() (组件永远不能小于什么)和 Size() ,它是屏幕上的当前大小。
对话框出现在当前内容之上,因此不受内容布局等的限制或扩展。
由于对话框不是设计为一段时间的主要内容,我想知道将您的内容更改为 window 中是否更合适(因为应用程序中的某些内容时真正使用对话框正在发生,你想打断它)。
例如:
import (
"fyne.io/fyne"
"fyne.io/fyne/app"
"fyne.io/fyne/container"
"fyne.io/fyne/layout"
"fyne.io/fyne/widget"
)
var myApp fyne.App
func main() {
myApp = app.New()
myWindow := myApp.NewWindow("test")
yes := widget.NewButton("Yes", closeCallback)
yes.Importance = widget.HighImportance
myWindow.SetContent(container.NewVBox(
widget.NewLabel("Are you sure you want to interact with this test dialog?"),
container.NewHBox(layout.NewSpacer(),
widget.NewButton("No", closeCallback), yes,
layout.NewSpacer())))
myWindow.ShowAndRun()
}
func closeCallback() {
myApp.Quit()
}
我正在使用 Go 的 Fyne 包。我想要做的就是显示一个对话框,并让 window 自动调整到对话框的最大尺寸。我已经浏览了文档并查看了示例,但我无法在任何地方找到它! window 始终为 0x0 像素。如果我调整 window 的大小,我可以看出对话框具有最大高度和宽度,但我似乎无法将其反馈到 window 的大小。这是我的代码:
import (
"fyne.io/fyne"
"fyne.io/fyne/app"
"fyne.io/fyne/dialog"
)
var myApp fyne.App
func main() {
myApp = app.New()
myWindow := myApp.NewWindow("test")
cnfm := dialog.NewConfirm("Test Dialog!", "Are you sure you want to interact with this test dialog?", loseCallback, myWindow)
cnfm.Show()
cnfm.Resize(cnfm.MaxSize())
myWindow.Show()
// uncomment to have a window greater than 0x0
//myWindow.Resize(fyne.NewSize(375, 180))
myApp.Run()
}
func loseCallback(yes bool) {
myApp.Quit()
}
这看起来很基本,但我就是找不到任何方法来实现它!我试过布局、容器等,但没有任何区别,window 始终为 0x0。非常感谢您对此提供帮助!
Fyne 并没有真正的 MaxSize 概念。有 MinSize() (组件永远不能小于什么)和 Size() ,它是屏幕上的当前大小。 对话框出现在当前内容之上,因此不受内容布局等的限制或扩展。
由于对话框不是设计为一段时间的主要内容,我想知道将您的内容更改为 window 中是否更合适(因为应用程序中的某些内容时真正使用对话框正在发生,你想打断它)。
例如:
import (
"fyne.io/fyne"
"fyne.io/fyne/app"
"fyne.io/fyne/container"
"fyne.io/fyne/layout"
"fyne.io/fyne/widget"
)
var myApp fyne.App
func main() {
myApp = app.New()
myWindow := myApp.NewWindow("test")
yes := widget.NewButton("Yes", closeCallback)
yes.Importance = widget.HighImportance
myWindow.SetContent(container.NewVBox(
widget.NewLabel("Are you sure you want to interact with this test dialog?"),
container.NewHBox(layout.NewSpacer(),
widget.NewButton("No", closeCallback), yes,
layout.NewSpacer())))
myWindow.ShowAndRun()
}
func closeCallback() {
myApp.Quit()
}