go - 捕获按键按下/向上事件

标签 go events fyne

有没有办法捕获窗口上的按下和按下事件?我知道 widget.Entry 是可能的,但它是针对整个 fyne.Window 还是像 widget.Group 这样的小部件,所以我可以将其用作全局容器

我也知道可以通过执行诸如 myWindow.Canvas().SetOnTypedKey(... 之类的操作来捕获按键事件,但这不是我要找的。我我正在寻找一种方法来了解特定键何时被按下以及何时被释放。

最佳答案

按键向上和向下事件是桌面特定的扩展,因此应谨慎使用。在尝试使用桌面版 Canvas 之前,您必须确保该应用程序作为桌面应用程序运行。

如你所见,首先检查window canvas是否有能力,然后要求在桌面按键事件上得到通知。

    if deskCanvas, ok := w.Canvas().(desktop.Canvas); ok {
        deskCanvas.SetOnKeyDown(func(key *fyne.KeyEvent) {
            log.Println("Desktop key down", key)
        })
        deskCanvas.SetOnKeyUp(func(key *fyne.KeyEvent) {
            log.Println("Desktop key up", key)
        })
    }

如果在移动设备上运行,这将被简单地忽略,因此请确保您的应用程序可以在没有它们的情况下在移动设备上运行。

关于go - 捕获按键按下/向上事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61256461/

相关文章:

go - 使用 git2go 从远程执行 git fetch && git merge

c# - 删除代码隐藏的 asp.net 事件

go - 如何在 fyne 中调整输入框的大小

google-app-engine - 查询相同类型的根实体和子实体时,datastore 是否需要指定祖先?

struct - 如何动态清除类型结构实例的值

amazon-web-services - 如何使用 go-cloud s3blob 设置公共(public)读取?

excel - 通过宏的事件代码

c++ - SDL 中的调度事件

go - 让 Fyne 弹出菜单出现在鼠标位置

go - Fyne 中特定列表项的按钮操作