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

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

使用“選擇小部件”時(shí)我是如何感到恐慌的

使用“選擇小部件”時(shí)我是如何感到恐慌的

Go
MM們 2023-08-14 17:13:34
Go 和 Fyne 新手,并且跌跌撞撞地試圖從 Fyne 中獲取我需要的東西。抱歉,這會(huì)很長(zhǎng)。我的問(wèn)題是這樣的。我正在編寫一個(gè)應(yīng)用程序,它從服務(wù)器獲取命令列表,告訴它創(chuàng)建一系列小部件并顯示它們。它們有多種類型——標(biāo)簽、按鈕、條目、選擇等。但這些不是標(biāo)準(zhǔn)的小部件;而是標(biāo)準(zhǔn)的小部件。我需要稍微擴(kuò)展一下他們的行為。一方面,當(dāng)用戶操作時(shí),他們每個(gè)人都需要訪問(wèn)一些每個(gè)小部件的信息。例如,單擊按鈕必須引用特定于該按鈕的一些數(shù)據(jù),以便它知道要做什么。我們將此附加信息稱為“About”結(jié)構(gòu)。其次,每個(gè)小部件都需要能夠右鍵單擊并下拉小部件特定的菜單。是的,即使按鈕和標(biāo)簽也需要能夠提供下拉菜單。對(duì)于像 Entry 這樣的小部件,我知道這種設(shè)計(jì)將使我必須為粘貼、復(fù)制和 Entry 通常通過(guò)右鍵單擊提供的其他操作編寫自己的菜單選項(xiàng),但我對(duì)此表示同意。我已經(jīng)完成了所有這些工作,但在這個(gè)過(guò)程中我破壞了 Select(并且其他小部件可能也會(huì)損壞。)并且我不知道如何修復(fù)它。問(wèn)題:嘗試發(fā)送 Select 小部件會(huì)導(dǎo)致恐慌:界面轉(zhuǎn)換:fyne.Canvas 為零,而不是 *glfw.glCanvas方法:type GenericWidget struct {    fyne.Widget //I’m some kind of widget    about *About //here’s my personal “About” data    //function pointers    OnRightClickp func(gw *GenericWidget, pe *fyne.PointEvent)    OnLeftClickp func(gw *GenericWidget, pe *fyne.PointEvent)    …other “function pointers” for OnRunep and so on…}現(xiàn)在我必須捕獲所有“事件”,以便 GenericWidget 能夠看到它們:func (gw *GenericWidget) TappedSecondary(pe *fyne.PointEvent) {    if (gw.OnRightClickp != nil) {gw.OnRightClickp(gw, pe)}}func (gw *GenericWidget) Tapped(pe *fyne.PointEvent) {    if (gw.OnLeftClickp != nil){gw.OnLeftClickp(gw, pe)}}//type Focusable interface//etc….這應(yīng)該代表任何單個(gè)小部件,無(wú)論類型如何。這并不復(fù)雜:當(dāng)驅(qū)動(dòng)程序調(diào)用 Taped 時(shí),會(huì)調(diào)用 GenericWidget.Tapped。如果此小部件設(shè)置了“OnLeftClickp”函數(shù)指針,則調(diào)用它。至關(guān)重要的是,當(dāng)發(fā)生這種情況時(shí),我們傳遞一個(gè)指向小部件本身的指針,因?yàn)槲揖帉懙乃惺录幚沓绦蚨夹枰L問(wèn) *About 以及我添加到 GenericWidget 的其他任何內(nèi)容。當(dāng)需要?jiǎng)?chuàng)建標(biāo)簽時(shí),我會(huì)這樣做并將其折疊到 GenericWidget 中所有這些 GenericWidget 都工作正常 - 我將它們添加到適當(dāng)?shù)?Box 中,并且窗口按照我的預(yù)期進(jìn)行繪制。我可以右鍵單擊標(biāo)簽,如果設(shè)置了 OnRightClickp(通常是這樣),代碼將被調(diào)用并被授予對(duì) *GenericWidget 的訪問(wèn)權(quán)限,這會(huì)導(dǎo)致 *About,這意味著放置的菜單可以為以下內(nèi)容提供所有正確的內(nèi)容這個(gè)標(biāo)簽上有什么。當(dāng)然,Labels 通常不關(guān)心點(diǎn)擊,因此我竊取了 Tappable 中的所有調(diào)用這一事實(shí)并不重要。但是 Select 小部件確實(shí)關(guān)心左鍵單擊,因此 GenericWidget 攔截對(duì) Tapped() 的調(diào)用這一事實(shí)意味著我永遠(yuǎn)不會(huì)看到下拉菜單出現(xiàn)。編譯正常,選擇顯示,但是當(dāng)我左鍵單擊時(shí),它會(huì)打印預(yù)期的“選擇點(diǎn)擊”,然后立即出現(xiàn)恐慌:select tappedpanic: interface conversion: fyne.Canvas is nil, not *glfw.glCanvas我迷路了。我的 GenericWidget 只是一個(gè)小部件;我認(rèn)為這就是組合所做的,我創(chuàng)建的所有 GenericWidget 都放在一個(gè) Box 中,該 Box 位于窗口中的 SetContent 框中。但該錯(cuò)誤向我表明,不知何故,此 Select 對(duì)象設(shè)置不正確,當(dāng)它繪制選項(xiàng)時(shí),缺少某些內(nèi)容。我做錯(cuò)了什么?我的整個(gè)方法可能是錯(cuò)誤的(我做了很多 C++ 和 Python 工作,并且我對(duì)事物采取面向?qū)ο蟮挠^點(diǎn))。在這種情況下,我該如何做這一切呢?
查看完整描述

2 回答

?
慕神8447489

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

事實(shí)證明這是一個(gè) Fyne 錯(cuò)誤,現(xiàn)已修復(fù)。



查看完整回答
反對(duì) 回復(fù) 2023-08-14
?
慕沐林林

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

看起來(lái)不像正在撰寫選擇 - 您的擴(kuò)展選擇只是創(chuàng)建一個(gè)新選擇,稍后再點(diǎn)擊它。

崩潰是由于它試圖在畫布上找不到的選擇旁邊顯示彈出窗口。

如果您要擴(kuò)展內(nèi)置小部件,您還需要調(diào)用 ExtendBaseWidget,以便驅(qū)動(dòng)程序可以查找您的小部件而不是默認(rèn)的小部件。也就是說(shuō),可以擴(kuò)展任何其他類型的小部件的單個(gè)小部件違反了 Fyne API 的強(qiáng)類型設(shè)計(jì),您可能會(huì)遇到麻煩。


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

添加回答

舉報(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)