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

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

未能擴(kuò)展 fyne 的小部件

未能擴(kuò)展 fyne 的小部件

Go
泛舟湖上清波郎朗 2022-05-05 15:54:36
我正在嘗試(非常努力地)擴(kuò)展 Fyne 的一些小部件的功能。基本上我需要實(shí)現(xiàn)或“覆蓋”右鍵單擊選擇、按鈕、編輯等內(nèi)容。我還需要對(duì)其他一些行為進(jìn)行細(xì)微更改。我嘗試以各種方式擴(kuò)展現(xiàn)有的小部件。我所做的一切都會(huì)導(dǎo)致編譯失敗、恐慌或奇怪和不正確的行為。下面的答案提供了 Button 解決方案的聲明,但它并不完整。當(dāng)我將相同的技術(shù)應(yīng)用于 Select 時(shí),嘗試左鍵單擊時(shí)會(huì)出現(xiàn)恐慌??只攀莗anic: interface conversion: fyne.Canvas is nil, not *glfw.glCanvas回想起來(lái),這是我最初失敗的地方,也是促使我嘗試越來(lái)越復(fù)雜的方法的原因,但都沒(méi)有奏效。Button 和 Select 顯然有不同的要求。(很抱歉“不接受”,但另一種選擇是數(shù)小時(shí)的嘗試,并且不相信我所嘗試的 - 即使它避免了恐慌 - 是正確的長(zhǎng)期解決方案。聲稱(chēng) Fyne 小部件是可擴(kuò)展的 - 似乎合理地要求改進(jìn)文檔以顯示如何,因?yàn)橛字傻膰L試并不統(tǒng)一。)在這里,我嘗試使用答案中的技術(shù)擴(kuò)展我關(guān)心的小部件。我原以為所有這些小部件都會(huì)以相同的方式運(yùn)行,以覆蓋 TappedSecondary 為模。他們一般不會(huì)。正確的答案顯然比下面的答案復(fù)雜得多。這是我根據(jù)下面給出的代碼的發(fā)現(xiàn):擴(kuò)展按鈕(如答案所示):當(dāng)鼠標(biāo)進(jìn)入該區(qū)域時(shí),widget.Button會(huì)改變顏色。擴(kuò)展版沒(méi)有。單擊時(shí),這兩種形式都不會(huì)改變按鈕的外觀(我通常希望任何 GUI 都會(huì)出現(xiàn)這種情況,也許還缺少其他東西?)擴(kuò)展版本確實(shí)捕獲了 TappedSecondary。擴(kuò)展選擇(如上所示):左鍵單擊恐慌。右鍵單擊被正確捕獲。擴(kuò)展標(biāo)簽:您必須添加一個(gè)無(wú)操作的 Tapped 功能以使其與所需的界面相匹配,但是可以捕獲右鍵單擊,一切看起來(lái)都很好。擴(kuò)展條目:它捕獲了 TappedSecondary,正如預(yù)期的那樣,這意味著我沒(méi)有得到通常的下拉菜單。左鍵單擊(移動(dòng)光標(biāo))不會(huì)在新位置重繪光標(biāo),但內(nèi)部光標(biāo)位置會(huì)發(fā)生變化(退格會(huì)刪除新位置的字符,然后正確重繪所有內(nèi)容)。擴(kuò)展檢查: TappedSecondary 被捕獲。左鍵單擊會(huì)導(dǎo)致調(diào)用 OnChanged(并且每次正確傳遞的布爾值都會(huì)交替)但從未繪制復(fù)選標(biāo)記。據(jù)我今天所知,這些是我需要擴(kuò)展的唯一小部件,所以當(dāng)它使列出的小部件像往常一樣工作時(shí),我認(rèn)為答案是完整的,除了我得到 TappedSecondary。理想的答案是指向在線某個(gè)地方的新文檔,該文檔以保留現(xiàn)有行為的方式為所有小部件類(lèi)型提供了完整的示例(除非您故意覆蓋該行為。)總體印象:以最簡(jiǎn)單的方式擴(kuò)展小部件可能會(huì)改變或破壞小部件在響應(yīng)鼠標(biāo)事件時(shí)繪制的某些方面,包括來(lái)自 Select 的恐慌和缺少 Entry、Button 和 Check 中的圖形更改。我沒(méi)有覆蓋任何現(xiàn)有的 Tapped() 函數(shù),所以我不知道為什么會(huì)這樣。
查看完整描述

1 回答

?
寶慕林4294392

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

從庫(kù)中復(fù)制代碼在這里會(huì)分散注意力 - 擴(kuò)展小部件是完全可能的,所以我將回答最初的意圖而不是修復(fù)錯(cuò)誤......


您可以通過(guò)將核心小部件嵌入到結(jié)構(gòu)中然后添加或覆蓋功能來(lái)擴(kuò)展它。關(guān)鍵是調(diào)用ExtendBaseWidget,以便內(nèi)部正確注冊(cè)您的覆蓋類(lèi)型。以下代碼顯示了如何創(chuàng)建一個(gè)響應(yīng)右鍵單擊的新按鈕。


package main


import (

    "log"


    "fyne.io/fyne"

    "fyne.io/fyne/app"

    "fyne.io/fyne/widget"

)


type myButton struct {

    widget.Button

}


func (m *myButton) TappedSecondary(*fyne.PointEvent) {

    log.Println("Right Click")

}


func newMyButton(label string, tapped func()) *myButton {

    ret := &myButton{}

    ret.ExtendBaseWidget(ret)

    ret.Text = label

    ret.OnTapped = tapped


    return ret

}


func main() {

    a := app.New()


    w := a.NewWindow("Hello")

    w.SetContent(widget.NewVBox(

        newMyButton("Right tap me", func() {

            log.Println("Normal callback")

        }),

    ))


    w.ShowAndRun()

}



查看完整回答
反對(duì) 回復(fù) 2022-05-05
  • 1 回答
  • 0 關(guān)注
  • 161 瀏覽
慕課專(zhuān)欄
更多

添加回答

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