卓越飞翔博客卓越飞翔博客

卓越飞翔 - 您值得收藏的技术分享站
技术文章35366本站已运行395

golang fyne 中按住按钮

golang fyne 中按住按钮

php小编鱼仔将为大家介绍Golang Fyne中按住按钮的技巧和使用方法。Fyne是一个用于构建跨平台图形用户界面的轻量级框架,而按住按钮则是其中的一个重要功能。通过按住按钮,用户可以实现一系列连续操作,如拖拽、绘图等。本文将详细讲解如何在Golang Fyne中实现按住按钮的功能,并提供实用的代码示例和操作步骤,帮助读者快速掌握这一技巧。无论是初学者还是有一定经验的开发者,都能从本文中获得实用的知识和技巧,提升自己在Golang Fyne中的开发能力。敬请关注后续内容!

问题内容

使用 fyne GUI 框架,可以轻松构建具有基本功能的简单 GUI。 我无法找到一种方法来检测用户按下并按住按钮一段时间。我只能检测按钮是否被点击。这有可能吗?

解决方法

fyne 中的小部件具有最可能使用的功能。当小部件不提供所需的功能时,可以对其进行扩展。 可以在此处查看图标可点击的示例。 在此示例中,界面fyne/v2.Tappable 正在实现,其中还包含一个图标,这会导致可点击的图标。

为了使按钮可保持,我们需要实现一个接口,它可以注册 mousedown 和 mouseup 事件。这个接口是fyne/v2/driver/desktop.Mouseable。

这就是它的样子:

package main
import (
    "fyne.io/fyne/v2/app"
    "fyne.io/fyne/v2/widget"
    "fyne.io/fyne/v2/driver/desktop"
    "log"
)

type holdableButton struct {
    widget.Button
}
func newHoldableButton(label string) *holdableButton {
    button := &holdableButton{}
    button.ExtendBaseWidget(button)
    button.Text=label
    return button
}

func (h *holdableButton) MouseDown(*desktop.MouseEvent){
    log.Println("down")
}
func (h *holdableButton) MouseUp(*desktop.MouseEvent){
    log.Println("up")
}

func main() {
    a := app.New()
    w := a.NewWindow("Holdable")
    w.SetContent(newHoldableButton("Button"))
    w.ShowAndRun()
}

需要注意的是:Mouseable接口不会通过名称出现,只需要导入驱动包即可引用desktop.MouseEvent。但与 golang 中的情况一样,该接口是通过创建 MouseUp 和 MouseDown 这两个方法来实现的,即使您只“需要”一个,这两个方法也需要存在,否则这些都不起作用。

感谢 andy.xyz 为我指明了正确的方向。

卓越飞翔博客
上一篇: golang连续重复最长的字符
下一篇: 返回列表
留言与评论(共有 0 条评论)
   
验证码:
隐藏边栏