我正在使用以下代碼生成一個主窗口,其中帶有一個用于打開其他窗口的按鈕。我希望能夠反復隱藏和顯示其他窗口。關閉主窗口應退出程序: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}但是,當我隱藏一次后顯示另一個窗口時,所有標簽都消失了。重復時,程序崩潰并出現(xiàn)以下錯誤:fatal error: unexpected signal during runtime execution[signal SIGSEGV: segmentation violation code=0x1 addr=0x67fb0a pc=0x67fb0a]問題出在哪里以及如何解決。感謝您的幫助。
1 回答

catspeake
TA貢獻1111條經(jīng)驗 獲得超0個贊
這里:
otherWindow.OnClosing(?func?(*ui.Window)?bool?{?otherWindow.Hide();?return?true?}?)
你應該返回false
而不是true
。事實上,當您關閉窗口時,該窗口會被破壞,從而在您稍后嘗試引用它時導致分段錯誤。
OnClosing 注冊 f 在用戶單擊窗口的關閉按鈕時運行。一次只能注冊一項功能。如果 f 返回 true,則使用 Destroy 方法銷毀窗口。如果 f 返回 false,或者從未調(diào)用 OnClosing,則窗口不會被銷毀并保持可見。
- 1 回答
- 0 關注
- 151 瀏覽
添加回答
舉報
0/150
提交
取消