登录
首页 >  Golang >  Go问答

在多行 Fyne Entry 小部件中捕获 Enter(更一般地说,调用“父类”)

来源:stackoverflow

时间:2024-04-08 18:33:35 313浏览 收藏

在IT行业这个发展更新速度很快的行业,只有不停止的学习,才不会被行业所淘汰。如果你是Golang学习者,那么本文《在多行 Fyne Entry 小部件中捕获 Enter(更一般地说,调用“父类”)》就很适合你!本篇内容主要包括##content_title##,希望对大家的知识积累有所帮助,助力实战开发!

问题内容

这个问题更多的是关于 go 而不是 fyne。扩展 fyne 的 entry 小部件是规定的方式,我想检测何时按下 enter(返回)并将其用作我需要对 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 那样”来赢得胜利。

我知道 go 不是面向对象的语言,但扩展类型然后将调用重定向回父类型是一种基本的编程技术;我什至会说,如果您无法从扩展中返回“基本结构”行为,则扩展结构就没有意义。我错过了什么?


解决方案


没有名称的嵌入类型可以使用类型的名称来引用 - 因此以下内容将起作用:

func (m *myEntry) TypedKey(key *fyne.KeyEvent) {
    if key.Name == "Return" {
            // send m.Text somewhere...
    } else {
        Entry.TypedKey(key)
    }
}

今天关于《在多行 Fyne Entry 小部件中捕获 Enter(更一般地说,调用“父类”)》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>