有没有办法在窗口上捕获按键和按键事件?我知道它是可能的,widget.Entry
但它是一个整体fyne.Window
还是一个小部件,widget.Group
所以我可以将它用作全局容器?
我也知道可以通过执行类似的操作来捕获按键事件,myWindow.Canvas().SetOnTypedKey(...
但这不是我想要的。我正在寻找一种方法来了解何时按下特定键以及何时释放它。
按键向上和向下事件是特定于桌面的扩展,因此应谨慎使用。在尝试使用桌面版画布之前,您必须确保应用程序作为桌面应用程序运行。
如您所见,首先检查窗口画布是否可用,然后要求在桌面关键事件上得到通知。
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)
})
}
如果在移动设备上运行,这将被忽略,因此请确保您的应用程序可以在没有它们的情况下在移动设备上运行。