User interface 如何在Fyne中将窗口调整为对话框大小

User interface 如何在Fyne中将窗口调整为对话框大小,user-interface,go,fyne,User Interface,Go,Fyne,我使用的是Go的Fyne软件包。我只想显示一个对话框,并让窗口自动调整到对话框的最大大小。我已经阅读了文档并查看了示例,但我在任何地方都找不到!窗口始终为0x0像素。如果我调整窗口的大小,我可以看出对话框有一个最大的高度和宽度,但我似乎无法将其反馈到窗口的大小。这是我的密码: import ( "fyne.io/fyne" "fyne.io/fyne/app" "fyne.io/fyne/dialog" )

我使用的是Go的Fyne软件包。我只想显示一个对话框,并让窗口自动调整到对话框的最大大小。我已经阅读了文档并查看了示例,但我在任何地方都找不到!窗口始终为0x0像素。如果我调整窗口的大小,我可以看出对话框有一个最大的高度和宽度,但我似乎无法将其反馈到窗口的大小。这是我的密码:


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()
}

这似乎真的很基本,但我就是找不到任何方法来实现这一点!我尝试过使用布局、容器等,但没有什么不同,窗口总是0x0。我真的非常感谢你的帮助

Fyne实际上没有MaxSize的概念。有MinSize()(组件永远不应该小于的)和它的Size(),它是屏幕上的当前大小。 对话框出现在当前内容上,因此不受内容布局等的限制或扩展

由于对话框不是设计为一段时间内的主要内容,我想知道是否将您的内容更改为在窗口内会更合适(因为对话框实际上是在应用程序中发生某些事情时使用的,您想中断它)

例如:

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()
}