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 fyne 中按住按钮的详细内容,更多请关注编程网其它相关文章!