【问题标题】:Pynput script does not return an output with escape keyPynput 脚本不返回带有转义键的输出
【发布时间】:2019-06-05 04:29:23
【问题描述】:

我最近一直在使用 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()

我想让程序在 [website] 的位置打开一个网页。任何解决此问题的帮助将不胜感激!

谢谢!

【问题讨论】:

    标签: python pynput


    【解决方案1】:

    我对 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
    

    【讨论】:

    • 到目前为止,Web 浏览器的打开似乎运行良好。出现的问题似乎与 killswitch 有关。不过感谢您的帮助!
    【解决方案2】:

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

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

    应该可以正常工作。

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

    【讨论】:

    • 我什至可能建议不要将密钥转换为字符串。
    • 您是如何假设str(key) 将是这个特定的字符串'Key.esc'?变量Key.esc 可能包含一个字符串。
    猜你喜欢
    • 2015-07-27
    • 2021-11-09
    • 1970-01-01
    • 2020-11-29
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 2022-10-23
    • 1970-01-01
    相关资源
    最近更新 更多