go - 捕获按键向下/向上事件
问题描述
有没有办法在窗口上捕获按键和按键事件?我知道它是可能的,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)
})
}
如果在移动设备上运行,这将被忽略,因此请确保您的应用程序可以在没有它们的情况下在移动设备上运行。
推荐阅读
- rust - 在 2 个结构之间共享变量
- ansible - 指定标签时无法运行 Ansible 剧本
- html - 如何在 HTML 中的 div 的垂直轴的中心对齐文本?
- kotlin - 有没有办法为 2 个 editTexts 制作 1 个 Textwatcher?
- python - 如何找到一个数字的所有除数的总和,而不包括它
- python - 使用python将日期时间范围分配给变量
- c - VSCode C 问题:在 Windows 上调试和构建 C
- scala - HashMap 只显示一个键值
- gitlab - 远程存储库上的 Gitlab 镜像失败通知
- schemacrawler - SchemaCrawler 用户名和角色