主题
键盘快捷键 (Keyboard Shortcuts)
坚实的键盘支持是用户在使用 Web 应用,尤其是桌面应用时提高生产力的关键。毕竟,在鼠标和键盘之间频繁切换是非常令人烦恼的。
除了表单控件的 .autofocus 属性和 TextField.focus() 方法外,Flet 还允许你捕获和处理“全局”键盘事件。
要捕获所有的按键操作,只需实现 page.on_keyboard_event 事件处理函数。事件处理函数参数 e 是 KeyboardEvent 类的实例,它包含以下属性:
key— 按键的文本表示形式,例如A、Enter或F5。shift— 若按下了 “Shift” 键则为True。ctrl— 若按下了 “Control” 键则为True。alt— 若按下了 “Alt” (macOS 上为 “Option”) 键则为True。meta— 若按下了 “Command” (或 Windows 键) 键则为True。
以下是一个简单的使用示例:
python
import flet as ft
def main(page: ft.Page):
def on_keyboard(e: ft.KeyboardEvent):
page.add(
ft.Text(
f"Key: {e.key}, Shift: {e.shift}, Control: {e.ctrl}, Alt: {e.alt}, Meta: {e.meta}"
)
)
page.on_keyboard_event = on_keyboard
page.add(
ft.Text("请按下任意键并配合 CTRL、ALT、SHIFT 和 META 键进行组合...")
)
ft.run(main)键盘快捷键示例
下面是一个更高级的示例:
提示
你可以在这里在线尝试。
python
import flet as ft
class ButtonControl(ft.Container):
def __init__(self, text):
super().__init__()
self.content: ft.Text = ft.Text(text)
self.border = ft.Border.all(1, ft.Colors.BLACK_54)
self.border_radius = 3
self.bgcolor = "0x09000000"
self.padding = 10
self.visible = False
def main(page: ft.Page):
page.spacing = 50
page.vertical_alignment = ft.MainAxisAlignment.CENTER
page.horizontal_alignment = ft.CrossAxisAlignment.CENTER
def on_keyboard(e: ft.KeyboardEvent):
key.content.value = e.key
key.visible = True
shift.visible = e.shift
ctrl.visible = e.ctrl
alt.visible = e.alt
meta.visible = e.meta
page.update()
page.on_keyboard_event = on_keyboard
page.add(
ft.SafeArea(
content=ft.Column(
controls=[
ft.Text(
"请按下任意键并配合 CTRL、ALT、SHIFT "
"和 META 键进行组合..."
),
ft.Row(
controls=[
key := ButtonControl(""),
shift := ButtonControl("Shift"),
ctrl := ButtonControl("Control"),
alt := ButtonControl("Alt"),
meta := ButtonControl("Meta"),
],
alignment=ft.MainAxisAlignment.CENTER,
),
]
)
)
)
if __name__ == "__main__":
ft.run(main)