第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

從一組代碼同時(shí)打開 2 個(gè)相同的窗口

從一組代碼同時(shí)打開 2 個(gè)相同的窗口

Go
拉丁的傳說 2023-07-10 17:39:12
我使用以下代碼創(chuàng)建并顯示一個(gè)窗口,其中包含 GUI 組件作為標(biāo)簽、條目和按鈕:// modified from: https://github.com/andlabs/ui/wiki/Getting-Startedpackage mainimport ("github.com/andlabs/ui")func makewinfn() {    var name = ui.NewEntry()    var button = ui.NewButton("Greet")    var greeting = ui.NewLabel("")    box := ui.NewVerticalBox()    box.Append(ui.NewLabel("Enter your name:"), false)    box.Append(name, false)    box.Append(button, false)    box.Append(greeting, false)    mywindow := ui.NewWindow("MyTitle", 200, 100, false)    mywindow.SetChild(box)    button.OnClicked( func (*ui.Button) {greeting.SetText("Hello, " + name.Text() + "!") } )    mywindow.OnClosing( func (*ui.Window) bool { ui.Quit(); return true } )    mywindow.Show()}func main() {    ui.Main(makewinfn)    // HOW TO CREATE AND SHOW ANOTHER SUCH WINDOW HERE ?    // ui.Main(makewinfn) // this opens window only after first is closed.}它工作得很好,但是正如我在標(biāo)題中提到的以及上面代碼中的注釋,如何從 main 函數(shù)同時(shí)打開兩個(gè)這樣的窗口?在主函數(shù)中重復(fù)會(huì)ui.Main(makewinfn)導(dǎo)致僅在第一個(gè)窗口關(guān)閉后才打開第二個(gè)窗口。感謝您的幫助。
查看完整描述

2 回答

?
當(dāng)年話下

TA貢獻(xiàn)1890條經(jīng)驗(yàn) 獲得超9個(gè)贊

在 UI 庫(kù)中,通常您構(gòu)建界面所用的組件或小部件都有父級(jí),并且通常單個(gè)組件最多可能有一個(gè)父級(jí)。


因此,如果您想要 2 個(gè)具有相同組件的窗口,您仍然必須在 2 個(gè)實(shí)例中創(chuàng)建這些組件,因?yàn)橐粋€(gè)組件無(wú)法添加到 2 個(gè)不同的父級(jí)(在 2 個(gè)不同的窗口中)。


最簡(jiǎn)單的方法是將組件和窗口創(chuàng)建邏輯移動(dòng)到一個(gè)函數(shù)中,然后從傳遞給的函數(shù)中調(diào)用該函數(shù)兩次ui.Main():


func createWindow() {

    var name = ui.NewEntry()

    var button = ui.NewButton("Greet")

    var greeting = ui.NewLabel("")

    box := ui.NewVerticalBox()

    box.Append(ui.NewLabel("Enter your name:"), false)

    box.Append(name, false)

    box.Append(button, false)

    box.Append(greeting, false)

    mywindow := ui.NewWindow("MyTitle", 200, 100, false)

    mywindow.SetChild(box)

    button.OnClicked( func (*ui.Button) {greeting.SetText("Hello, " + name.Text() + "!") } )

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

    mywindow.Show()

}


func makewinfn() {

    createWindow()

    createWindow()

}

當(dāng)然,使用這個(gè)createWindow()函數(shù)不是必需的,您可以有一個(gè)循環(huán)進(jìn)行makewinfn()2 次迭代,每次迭代都可以創(chuàng)建一個(gè)窗口。


上面的示例創(chuàng)建了 2 個(gè)相同的窗口,但它們將是“獨(dú)立的”。如果您在其中一個(gè)窗口中輸入文本并單擊其按鈕,則結(jié)果將僅在其包含/父窗口中看到。這是可能的,因?yàn)槊總€(gè)組件都被創(chuàng)建了兩次。


如果您想自定義窗口,您可以傳遞一個(gè)參數(shù),createWindow()以便可以根據(jù)其值來(lái)自定義/個(gè)性化窗口及其內(nèi)容。例如:


func createWindow(id string) {

    var name = ui.NewEntry()

    var button = ui.NewButton("Greet " + id)

    var greeting = ui.NewLabel("")

    box := ui.NewVerticalBox()

    box.Append(ui.NewLabel("Enter your name " + id + ":"), false)

    box.Append(name, false)

    box.Append(button, false)

    box.Append(greeting, false)

    mywindow := ui.NewWindow("MyTitle " + id, 200, 100, false)

    mywindow.SetChild(box)

    button.OnClicked( func (*ui.Button) {greeting.SetText("Hello, " + name.Text() + "!") } )

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

    mywindow.Show()

}


func makewinfn() {

    createWindow("one")

    createWindow("two")

}


查看完整回答
反對(duì) 回復(fù) 2023-07-10
?
慕村9548890

TA貢獻(xiàn)1884條經(jīng)驗(yàn) 獲得超4個(gè)贊

我不知道 Go,但假設(shè) GUI 的工作方式與我使用過的任何其他語(yǔ)言一樣,在 makewinfn 函數(shù)中,您可以通過再次調(diào)用來(lái)簡(jiǎn)單地創(chuàng)建更多窗口ui.NewWindow()。


func makewinfn() {

    var name = ui.NewEntry()

    var button = ui.NewButton("Greet")

    var greeting = ui.NewLabel("")

    box := ui.NewVerticalBox()

    box.Append(ui.NewLabel("Enter your name:"), false)

    box.Append(name, false)

    box.Append(button, false)

    box.Append(greeting, false)

    mywindow := ui.NewWindow("MyTitle", 200, 100, false)

    mywindow.SetChild(box)

    button.OnClicked( func (*ui.Button) {greeting.SetText("Hello, " + name.Text() + "!") } )

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

    mywindow.Show()

    myOtherWindow := ui.NewWindow("MyOtherTitle", 200, 100, false)

    myOtherWindow.Show()

}


查看完整回答
反對(duì) 回復(fù) 2023-07-10
  • 2 回答
  • 0 關(guān)注
  • 166 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)