Pynput脚本不使用转义键返回输出

时间:2019-06-05 04:29:23

标签: python pynput

我最近一直在使用Pynput来尝试一些新程序。在一个这样的程序中,我打算在每次单击鼠标时都打开一个网页(或多或少的一个玩笑程序,但我可能会用它来帮助其他Pynput程序)。只要单击鼠标即可打开网页,但我尝试实现的killswitch效果不佳。单击转义后,脚本绝对不会返回任何内容。

总体来说,我对Pynput来说还很陌生,所以我对此并不感到惊讶。我怀疑问题可能出在最后的“ listener1”块中。这是代码:

#!/usr/bin/env python
from pynput import mouse
from pynput import keyboard
from pynput.keyboard import Key, Listener
import webbrowser
def on_release(key):
    if str(key) == Key.esc:
        quit()
def on_click (x, y, button, pressed):
    webbrowser.open('[website]')
listener1 = mouse.Listener(
        on_click=on_click)
listener1.start()
with keyboard.Listener(
        on_press=on_press,
        on_release=on_release) as listener:
    listener.join()

我希望该程序在[网站]处打开一个网页。在解决此问题方面的任何帮助将不胜感激!

谢谢!

2 个答案:

答案 0 :(得分:0)

我对Pynput不太了解,但看来您对打开的浏览器命令没有流控制。

也许看起来应该像这样:

def on_click (x, y, button, pressed):    
     listener1.start()
     with keyboard.Listener(on_press=on_press,on_release=on_release) as
     listener:listener.join()
     listener1 = mouse.Listener(on_click=on_click)
     if listener1:
          webbrowser.open('[website]')
     else:
          break

答案 1 :(得分:0)

我知道我有点晚了,但也许它仍然对某人有帮助。在将键转换为字符串后,您只是忘记在 Key.esc 周围使用引号。使用:

if str(key) == 'Key.esc':

应该可以正常工作。

我还建议您在 return False 之前使用 quit(),否则侦听器线程不会完全停止并可能继续运行。