有没有办法捕获窗口上的按下和按下事件?我知道 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/