這個問題更多是關(guān)于圍棋而不是 Fyne。擴(kuò)展 Fyne 的 Entry 小部件是規(guī)定的方式,我想檢測何時按下 Enter(Return)并將其用作我需要對 Entry 內(nèi)容采取行動的信號。我希望 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?這里關(guān)于調(diào)用“基類”的其他問題,Go 沒有,似乎沒有涵蓋這種情況。我想我可以通過添加來巧妙地解決這個問題type myEntry struct { widget.Entry me *Fyne.Focusable并在創(chuàng)建時將我設(shè)置為 myEntry 的地址,因此我可以簡單地調(diào)用 me.TypedKey。但是沒有處理鑰匙,然后發(fā)生了崩潰。在創(chuàng)建時設(shè)置 me=&myNewEntryObject 顯然不足以“widget.Entry-like”贏得這一天。我知道 Go 不是 OO 語言,但是擴(kuò)展一個類型然后將調(diào)用重定向回父類型是一種基本的編程技術(shù);我什至?xí)f,如果您無法從擴(kuò)展中恢復(fù)到“基本結(jié)構(gòu)”的行為,那么擴(kuò)展一個結(jié)構(gòu)是沒有意義的。我錯過了什么?
1 回答

慕容708150
TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超4個贊
可以使用類型的名稱來引用沒有名稱的嵌入式類型 - 因此以下內(nèi)容將起作用:
func (m *myEntry) TypedKey(key *fyne.KeyEvent) {
if key.Name == "Return" {
// send m.Text somewhere...
} else {
Entry.TypedKey(key)
}
}
- 1 回答
- 0 關(guān)注
- 293 瀏覽
添加回答
舉報
0/150
提交
取消