Skip to content
On this page

向应用程序添加快捷方式

快捷键是常见的任务,可以通过键盘组合或上下文菜单触发。快捷键,就像键盘事件一样,可以附加到聚焦元素或注册在画布上,以便在窗口中始终可用

使用画布注册

定义了许多标准快捷键(如fyne.ShortcutCopy),这些快捷键连接到标准键盘快捷键和右键菜单。添加新快捷方式的第一步是定义快捷方式。对于大多数用途,这将是一个键盘触发的快捷方式,这是一个桌面扩展。为此,我们使用desktop.CustomShortcut,例如使用Tab键和Control修改器,您可以执行以下操作:

go
ctrlTab := &desktop.CustomShortcut{KeyName: fyne.KeyTab, Modifier: fyne.KeyModifierControl}

请注意,此快捷方式可以重复使用,以便您可以将其附加到菜单或其他项目。对于本例,我们希望它始终可用,因此我们将其注册到窗口的画布中,如下所示:

go
ctrlTab := &desktop.CustomShortcut{KeyName: fyne.KeyTab, Modifier: fyne.KeyModifierControl}
	w.Canvas().AddShortcut(ctrlTab, func(shortcut fyne.Shortcut) {
		log.Println("We tapped Ctrl+Tab")
	})

如您所见,以这种方式注册快捷方式有两个部分——传递快捷方式定义和回调函数。如果用户键入键盘快捷键,则将调用该函数并打印输出。

向输入框中添加快捷方式

只有在聚焦当前项目时才应用快捷方式也很有帮助。这种方法可以用于任何可聚焦的小部件,并通过扩展该小部件并添加TypedShortcut处理程序来管理。这很像添加键处理程序,只是传入的值将是fyne.Shortcut。

go
type myEntry struct {
	widget.Entry
}

func (m *myEntry) TypedShortcut(s fyne.Shortcut) {
	if _, ok := s.(*desktop.CustomShortcut); !ok {
		m.Entry.TypedShortcut(s)
		return
	}

	log.Println("Shortcut typed:", s)
}

从上面的摘录中,您可以看到TypedShortcut处理程序是如何实现的。在该函数中,您应该检查快捷方式是否为先前使用的自定义类型。如果快捷方式是标准快捷方式,最好调用原始快捷方式处理程序(如果小部件有)。完成这些检查后,您可以将快捷方式与正在处理的各种类型进行比较(如果有多种类型)。