在python中,应如何捕获用户键盘输入?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在python中,应如何捕获用户键盘输入?相关的知识,希望对你有一定的参考价值。

通过input(),可以获取用户键入的字符串;但是,我希望在用户按下某个键时(比如W键,↑键),不用在命令提示符中显示用户输入、不需用户按Enter,直接做出反应(比如,打印一段话)。请问应如何实现?

参考技术A python是当下十分火爆的编程语言,尤其在人工智能应用方面。如果有心从事编程方向的工作,最好到专业机构深入学习、多实践,更贴近市场,这样更有利于将来的发展。 参考技术B import tkinter as tk
win=tk.Tk()#主界面
def getkey(event):
print("按下 %s"%event.keysym)#获取按下键
win.bind("<Key>",getkey)#绑定事件
win.mainloop()#显示主界面

如何捕获物理键盘输入和C#?

private void send_Click(object sender, RoutedEventArgs e)
{
    (Application.Current as App).Broadcast(new ChatMessage { Username = name.Text, Message = text.Text });
    text.Text = "";
}

这是我的点击事件,但我已经厌倦了移动光标来点击它。有没有办法设置回车按钮来激活此事件?

答案

您可以在xaml文件中绑定键绑定,如下所示:

<Window.InputBindings>
    <KeyBinding Key="Return" Command="{Binding EnterKeyPressCommand}"/>
</Window.InputBindings>

EnterKeyPressCommand:这可以是代码隐藏或视图模型中的DelegateCommand,无论您的视图是DataContext。

另一答案

如果按下“Enter”,您可以在文本框中添加KeyDown事件并触发send_Click事件。

另一答案

只需捕获要捕获输入的容器的KeyDown事件句柄,然后判断输入virtual key是否为Enter。例如,以下演示捕获CoreWindow的键盘输入。

public MainPage()
{
    this.InitializeComponent();
    Window.Current.CoreWindow.KeyDown += CoreWindow_KeyDown;
}

private void CoreWindow_KeyDown(Windows.UI.Core.CoreWindow sender, Windows.UI.Core.KeyEventArgs args)
{           
    if (args.VirtualKey == VirtualKey.Enter)
    {
        System.Diagnostics.Debug.WriteLine(args.VirtualKey.ToString());
        //(Application.Current as App).Broadcast(new ChatMessage { Username = name.Text, Message = text.Text });
        //text.Text = "";
    }
}

更多细节请参考Keyboard events

以上是关于在python中,应如何捕获用户键盘输入?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 UITextField 子类中拦截来自键盘的文本输入事件

如何捕获物理键盘输入和C#?

如何在 viewDidLoad 上的 Swift 中显示没有 UITextField 的标准数字键盘

如何检测用户在 iOS 中使用了语音输入?

WPF 捕获键盘输入事件

结合点击关闭键盘、键盘避免视图和提交按钮