我正在使用以下代码生成一个主窗口,其中带有一个用于打开其他窗口的按钮。我希望能够反复隐藏和显示其他窗口。关闭主窗口应退出程序:package mainimport ("github.com/andlabs/ui")func main() { ui.Main(makeAllWins)}var mainWindow *ui.Windowvar otherWindow *ui.Windowfunc 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]问题出在哪里以及如何解决。感谢您的帮助。
1 回答
catspeake
TA贡献1111条经验 获得超0个赞
这里:
otherWindow.OnClosing( func (*ui.Window) bool { otherWindow.Hide(); return true } )
你应该返回false
而不是true
。事实上,当您关闭窗口时,该窗口会被破坏,从而在您稍后尝试引用它时导致分段错误。
OnClosing 注册 f 在用户单击窗口的关闭按钮时运行。一次只能注册一项功能。如果 f 返回 true,则使用 Destroy 方法销毁窗口。如果 f 返回 false,或者从未调用 OnClosing,则窗口不会被销毁并保持可见。
- 1 回答
- 0 关注
- 106 浏览
添加回答
举报
0/150
提交
取消