亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在多行 Fyne Entry 小部件中捕獲 Enter(更一般地,調用“父類”)

在多行 Fyne Entry 小部件中捕獲 Enter(更一般地,調用“父類”)

Go
UYOU 2022-05-05 17:37:48
這個問題更多是關于圍棋而不是 Fyne。擴展 Fyne 的 Entry 小部件是規定的方式,我想檢測何時按下 Enter(Return)并將其用作我需要對 Entry 內容采取行動的信號。我希望 Shift-Return 在文本中添加換行符,而不表示我需要采取行動。給定一個以type myEntry struct {    widget.Entry    .....more... }很容易添加func (m *myEntry) TypedKey(key *fyne.KeyEvent) {    if key.Name == "Return" {            ///send m.Text somewhere...    } else {        //WRONG: m.(*widget.Entry).TypedKey(key) //give Key to Entry widget to process    }}但 else 子句無法編譯。因此,在確定這不是我想要攔截的 Key 之后,我該如何將它還給 widget.Entry?這里關于調用“基類”的其他問題,Go 沒有,似乎沒有涵蓋這種情況。我想我可以通過添加來巧妙地解決這個問題type myEntry struct {    widget.Entry    me *Fyne.Focusable并在創建時將我設置為 myEntry 的地址,因此我可以簡單地調用 me.TypedKey。但是沒有處理鑰匙,然后發生了崩潰。在創建時設置 me=&myNewEntryObject 顯然不足以“widget.Entry-like”贏得這一天。我知道 Go 不是 OO 語言,但是擴展一個類型然后將調用重定向回父類型是一種基本的編程技術;我什至會說,如果您無法從擴展中恢復到“基本結構”的行為,那么擴展一個結構是沒有意義的。我錯過了什么?
查看完整描述

1 回答

?
慕容708150

TA貢獻1831條經驗 獲得超4個贊

可以使用類型的名稱來引用沒有名稱的嵌入式類型 - 因此以下內容將起作用:


func (m *myEntry) TypedKey(key *fyne.KeyEvent) {

    if key.Name == "Return" {

            // send m.Text somewhere...

    } else {

        Entry.TypedKey(key)

    }

}


查看完整回答
反對 回復 2022-05-05
  • 1 回答
  • 0 關注
  • 296 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號