用pynput识别的JS触发键盘事件

2024-10-02 16:22:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在Python的瓶子框架中运行一个网站,我正在使用pynput包中的键盘侦听器。当按下delete键时,侦听器停止。当HTML文件中的某个按钮被点击时,我希望监听器停止。我想用JavaScript编写一个函数,当点击按钮时将执行该函数,该函数将触发按下delete键(从而使侦听器停止)

我在互联网上发现了许多JS函数,它们会触发删除按钮被按下,但在这些例子中,键盘侦听器都没有停止。Python中的侦听器从未识别出这些事件。有没有人知道如何编写这样的JS函数,该函数将触发按键,并且Python中的侦听器将识别按键已被按下

编辑:

以下是我的代码的一部分(pynput部分):

def on_press(key):
    try:
        k = key.char
    except:
        k = key.name
    print('Key pressed: ' + k)
    if k in ['left', 'right', 'up', 'down', 'delete']:
        #print('Key pressed: ' + k)
        return False  

def dobi_smer():
    listener = keyboard.Listener(on_press = on_press)
    listener.start()
    listener.join()
    with keyboard.Events() as events:
        for event in events:
            if event.key == keyboard.Key.left:
                return 'L'
            elif event.key == keyboard.Key.right:
                return 'R'    
            elif event.key == keyboard.Key.up:
                return 'U'        
            elif event.key == keyboard.Key.down:
                return 'D'
            elif event.key == keyboard.Key.delete:
                return 'X'

它会监听键盘,直到按下其中一个箭头或delete键

根据答案,我已经在我的网站上创建了一个新页面,模拟正在按下的删除键。下面是瓶子里的代码:

@bottle.post("/igraj/prekini/")
def igraj_prekini():
    print("bla")
    keyboard.press(keyboard.Key.delete)
    keyboard.release(keyboard.Key.delete)

我尝试使用AJAX发送此post请求,并使用以下功能:

function prekini() {$.post("/igraj/prekini/")}

function prekini() {$.ajax('/igraj/prekini/', {type: 'POST'})}

但这两个函数都不能工作,因为从未访问过page/igraj/prekini/。(字符串“bla”从未打印)


Tags: key函数eventreturndef键盘delete按钮
1条回答
网友
1楼 · 发布于 2024-10-02 16:22:28

您可以在html中创建一个stopbutton,并在该按钮中创建一个write javascript函数来侦听click。现在,当clicked表示button时,函数就可以工作了。因此,在该函数中,您可以编写AJAX代码来调用一些url,如/stop_pynputbottle中的/stop_pynput路由,如您的主页/。然后编写代码,在那里停止pynput,或者在那里调用一些函数并返回一些东西。所以,现在你必须掌握用我的想法解决这个问题的技巧,如果你已经知道这一点,那么这是最好的,但是如果你不熟悉ajax,那么试着在评论中询问它

以列表形式执行的步骤:

  1. HTML中的停止按钮
  2. 听,用js点击
  3. 对某个内部url的Ajax请求
  4. 我走那条路
  5. 现在,主要部分。在该路由/函数内或在该路由内编写运行脚本以停止pynput

如果有任何疑问,请随时发表评论

相关问题 更多 >