为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
素胚勾勒不出你 2023-07-10 17:55:45
我正在使用以下代码生成一个主窗口,其中带有一个用于打开其他窗口的按钮。我希望能够反复隐藏和显示其他窗口。关闭主窗口应退出程序: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,则窗口不会被销毁并保持可见。


查看完整回答
反对 回复 2023-07-10
  • 1 回答
  • 0 关注
  • 106 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信