gpt4 book ai didi

user-interface - 隐藏窗口删除所有内容后显示

转载 作者:数据小太阳 更新时间:2023-10-29 03:18:29 25 4
gpt4 key购买 nike

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

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]

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

最佳答案

这里:

otherWindow.OnClosing( func (*ui.Window) bool { otherWindow.Hide(); return true } )

您应该返回 false 而不是 true。实际上,当您关闭窗口时,窗口会被破坏,从而导致您稍后尝试引用它时出现段错误。

根据 the documentation comments :

OnClosing registers f to be run when the user clicks the Window's close button. Only one function can be registered at a time. If f returns true, the window is destroyed with the Destroy method. If f returns false, or if OnClosing is never called, the window is not destroyed and is kept visible.

关于user-interface - 隐藏窗口删除所有内容后显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57503607/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com