隐藏窗口后显示会删除所有内容

我正在使用以下代码生成一个主窗口,其中带有一个用于打开其他窗口的按钮。我希望能够反复隐藏和显示其他窗口。关闭主窗口应退出程序:


package main

import ("github.com/andlabs/ui")


func main() {

    ui.Main(makeAllWins)

}


var mainWindow *ui.Window

var otherWindow *ui.Window


func makeAllWins(){

    makeMainWin()

    makeOtherWin()

    mainWindow.Show()

}

func makeMainWin(){

    var otherButton = ui.NewButton("Other module")

    otherButton.OnClicked( func (*ui.Button) { otherWindow.Show() })

    var box = ui.NewVerticalBox()

    box.Append(ui.NewLabel("Select module"), false)

    box.Append(otherButton, false)

    mainWindow = ui.NewWindow("Hello", 200, 100, false)

    mainWindow.SetChild(box)

    mainWindow.OnClosing( func (*ui.Window) bool { ui.Quit(); return true   } )

}

func makeOtherWin(){

    var box = ui.NewVerticalBox()

    box.Append(ui.NewLabel("label1"), false)

    box.Append(ui.NewLabel("label2"), false)

    box.Append(ui.NewLabel("label3"), false)

    otherWindow = ui.NewWindow("Other", 200, 100, false)

    otherWindow.SetChild(box)

    otherWindow.OnClosing( func (*ui.Window) bool { otherWindow.Hide(); return true } )  // I THINK PROBLEM IS IN THIS LINE

}

但是,当我隐藏一次后显示另一个窗口时,所有标签都消失了。重复时,程序崩溃并出现以下错误:


fatal error: unexpected signal during runtime execution

[signal SIGSEGV: segmentation violation code=0x1 addr=0x67fb0a pc=0x67fb0a]

问题出在哪里以及如何解决。感谢您的帮助。


素胚勾勒不出你
浏览 119回答 1
1回答

catspeake

这里:otherWindow.OnClosing( func (*ui.Window) bool { otherWindow.Hide(); return true } )你应该返回false而不是true。事实上,当您关闭窗口时,该窗口会被破坏,从而在您稍后尝试引用它时导致分段错误。OnClosing 注册 f 在用户单击窗口的关闭按钮时运行。一次只能注册一项功能。如果 f 返回 true,则使用 Destroy 方法销毁窗口。如果 f 返回 false,或者从未调用 OnClosing,则窗口不会被销毁并保持可见。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go