猿问

Golang Fyne v2 自定义入口小部件无法否决 FocusGained() 函数?

我目前在 Golang Fyne V2 框架中工作。我想在单击/选择我的条目小部件时调用自定义函数。我的方法是制作一个自定义条目小部件。 https://developer.fyne.io/api/v2.0/widget/entry.html

问题是我的自定义小部件没有否决以下功能:

func (e *Entry) Tapped(ev *fyne.PointEvent)

或者

func (e *Entry) FocusGained()

我的自定义输入字段基本上是这样的。我看到在 Gui 容器中呈现的 inputField 太棒了。但是当我点击它时,“EXTRA FUNCTION CALL”没有被打印出来。

package gui


import (

    "fmt"


    "fyne.io/fyne/v2"

    "fyne.io/fyne/v2/driver/desktop"

    "fyne.io/fyne/v2/widget"

)


type InputField struct {

    widget.BaseWidget

    inputText      *widget.Entry

    customFunction func()

}


func NewInputField() *InputField {


    i := &InputField{

        BaseWidget: widget.BaseWidget{},

        inputText:  widget.NewEntry(),

    }


    i.inputText.Resize(i.MinSize())



    i.customFunction = func() {

        fmt.Println("EXTRA FUNCTION CALL")

    }


    i.ExtendBaseWidget(i)


    return i

}


func (i *InputField) MinSize() fyne.Size {

    return fyne.NewSize(600, 30)

}


func (i *InputField) Tapped(ev *fyne.PointEvent) {

    fmt.Println("I have been tapped")

    i.customFunction()

}


func (i *InputField) FocusGained() {

    fmt.Println("I have been focussed")

    i.customFunction()

}


func (i *InputField) FocusLost() {

    fmt.Println("Focus lost")

}


func (i *InputField) MouseDown(m *desktop.MouseEvent) {

    fmt.Println("MouseDown")

    i.customFunction()

}


func (t *InputField) CreateRenderer() fyne.WidgetRenderer {

    return NewBaseRenderer([]fyne.CanvasObject{t.inputText})

}


繁星淼淼
浏览 222回答 1
1回答

萧十郎

不要扩展BaseWidgetand ,直接Entry扩展即可。widget.Entry通过该更改,它应该可以按预期工作。
随时随地看视频慕课网APP

相关分类

Go
我要回答