标签: pynput

如何修复错误“没有名为‘pynput’的模块”?即使用 pip 下载后?

我按照视频使用 pip 在 Windows 中下载了 pynput:https://youtu.be/DTnz8wA6wpw

在管理员模式下使用cmd

pip install pynput
Run Code Online (Sandbox Code Playgroud)

当我运行代码时,pycharm和spyder3显示错误:

回溯(最近一次调用最后):文件“E:/Users/nilson/Dropbox/Python/PyCharm/auto/auto.py”,第1行,来自pynput.keyboard import Key,Controller ModuleNotFoundError:没有名为“pynput”的模块

这是我的代码:

from pynput.keyboard import Key, Controller
import time

keyboard = Controller()

time.sleep(2)

for char in "sasdasdasda":
    keyboard.press(char)
    keyboard.release(char)
    time.sleep(0.12)
Run Code Online (Sandbox Code Playgroud)

python pip pynput

13
推荐指数
2
解决办法
9万
查看次数

绘制鼠标移动Python

我想使用matplotlib和pynput近乎实时地绘制鼠标的移动,但我怀疑我遇到了一些被阻止的代码问题.代码是使用此答案的简化版本.

import matplotlib.pyplot as plt
from pynput import mouse
from time import sleep

fig, ax = plt.subplots()

ax.set_xlim(0, 1920-1)
ax.set_ylim(0, 1080-1)
plt.show(False)
plt.draw()

x,y = [0,0]
points = ax.plot(x, y, 'o')[0]
# cache the background
background = fig.canvas.copy_from_bbox(ax.bbox)

def on_move(x, y):
    points.set_data(x,y)
    # restore background
    fig.canvas.restore_region(background)
    # redraw just the points
    ax.draw_artist(points)
    # fill in the axes rectangle
    fig.canvas.blit(ax.bbox)

with mouse.Listener(on_move=on_move) as listener:
    sleep(10)
Run Code Online (Sandbox Code Playgroud)

代码似乎停止了ax.draw_artist(points).pynput鼠标侦听器是a threading.Thread,并且从线程调用所有回调.我对matplotlib或线程的内部工作原理不太熟悉,无法确定原因.

python matplotlib pynput

8
推荐指数
1
解决办法
852
查看次数

将pynput与pyinstaller一起使用时出错

我的一个朋友让我给他写一个程序,我用 pynput 来处理一些输入和其他功能。当我使用 pyinstaller 将程序转换为可执行文件时,启动可执行文件会出现以下错误: File "site-packages\pynput\keyboard\__init__.py", line 31, in <module> File "site-packages\pynput\_util\__init__.py", line 82, in backend ImportError [11492] Failed to execute script friend_project

我曾尝试使用 pyinstaller 命令pyinstaller --onefile friend_project.py,并使用 auto-py-to-exe 来运行它。

将 pyinstaller 与其他模块(如 pygame 或 pyopengl)一起使用不会给我带来任何错误,但这个模块确实如此。使用 python inturpeter 自行运行脚本工作正常,但我希望它是一个 exe,这样我就可以把它给他,而他不需要 python 来运行它。

pyinstaller python-3.x pynput

8
推荐指数
2
解决办法
5658
查看次数

(pynput) 捕获键阻止将它们发送到其他应用程序

在 pynput 上,我通过执行类似的操作来捕获一个键(例如空格键):

from pynput import keyboard
from pynput.keyboard import Key

def on_press(key, ctrl):
    if key == Key.space:
        print('captured')


def main():
    with keyboard.Listener(on_press=on_press) as listener:
        listener.join()
Run Code Online (Sandbox Code Playgroud)

但是我注意到这仍然将原始密钥代码发送到其他应用程序。我希望使用 python 将键(组合)“绑定”到其他键(或更高级的操作),因此需要防止这种情况。

如何才能做到这一点?或者这超出了操作系统允许 python 执行的范围?

python keyboard pynput

5
推荐指数
1
解决办法
3558
查看次数

在Windows中按住SHIFT键的同时如何模拟鼠标单击?

您好,我正在尝试按住SHIFT键的同时模拟鼠标单击。我一直在尝试使用该pynput模块。

到目前为止,这是我的代码:

from pynput.keyboard import Key
from pynput.keyboard import Controller as Cont
from pynput.mouse import Button, Controller
import time

mouse = Controller()
keyboard = Cont()

with keyboard.pressed(Key.shift):
    mouse.position = (1892, 838)
    mouse.click(Button.left)
Run Code Online (Sandbox Code Playgroud)

我知道用于按住Shift键的代码正在工作(如果我尝试按代码中的“ a”按钮,则会看到“ A”)。我也知道鼠标单击正在工作。但是,在一起无法正常工作。


我也尝试了StackOverflow帖子中的另一个代码:Pyautogui-需要按住shift键并单击

我从中尝试了以下代码:

import pyautogui

pyautogui.keyDown('shift')
pyautogui.click()
pyautogui.keyUp('shift')
Run Code Online (Sandbox Code Playgroud)

这工作了一分钟,然后停止工作!很奇怪。10次​​失败中有9次失败。

python keyboard mouse pyautogui pynput

5
推荐指数
1
解决办法
442
查看次数

pynput 只能处理来自特定键盘的输入吗?如果是,如何实现这一目标?

如果多个物理键盘连接到系统,或者连接单个物理键盘但同时使用触摸屏,可以将 pynput 配置为按设备过滤输入,或者我应该向下一级并使用某些东西别的?

我浏览了文档,但到目前为止没有给我任何线索。

hardware python-3.x pynput

5
推荐指数
0
解决办法
210
查看次数

检测按键是否按下 - python

我的用例

我需要知道何时按下并按住(特定)键。检测后的用例相当简单。当按键被释放时,发送一个信号来停止回调(我已经知道了)。

期望的行为

以下是该算法的粗略方案:

def the_callback():
    if key_held == the_hotkey:
        someObj.start()  # this class Obj works totally well so no issues here on
    elif key_released == the_hotkey:
        someObj.stop()
    else:
        # we don't care. continue looking for Keyboard events

# here any kinda listener or just a loop which passes events to the callback
Run Code Online (Sandbox Code Playgroud)

我应该提到,任何阻止执行的侦听器都可以,因为它将在自己的线程中运行(已经pynput.keyboard.Listener在线程中运行,所以不是问题)

我尝试过的

我使用pynputand itpynput.keyboard.Listener来检测按键并相应地调用回调,但我无法检测按键何时被按下。

当前的解决方案大致如下:

# not real code. just rough scheme
def on_pressed(key):
    if key == my_hotkey:
        if running_already:  # …
Run Code Online (Sandbox Code Playgroud)

python keyboard callback keyboard-events pynput

5
推荐指数
1
解决办法
3957
查看次数

当键盘侦听器完成时,Pynput 打印输入的键

这让我很困扰。当使用带有 Keyboard.Listener 的 Python pynput 模块时,键盘监听器停止后,键盘监听时输入的任何内容都会在终端中打印出来。

我尝试过 termios.tcflush(sys.stdout, termios.TCIOFLUSH) 但它似乎没有清除缓冲区并停止将字符打印到终端窗口中。

非常感谢任何帮助!下面的脚本 -


import sys
from pynput import keyboard
import termios
global go_to_selection

def on_press(key):
    global go_to_selection

    if key != keyboard.Key.tab and key != keyboard.Key.shift and key != keyboard.Key.enter:

        termios.tcflush(sys.stdout, termios.TCIOFLUSH)
        go_to_selection = True
        return False


with keyboard.Listener(on_press=on_press) as listener:
    listener.join()

if go_to_selection == True:
    _user_choice = input('\r\nSelection: ')
    print('  Chosen: '+ str(_user_choice))
Run Code Online (Sandbox Code Playgroud)

编辑:

with keyboard.Listener(on_press=on_press, suppress=True ) as listener:
        listener.join()
Run Code Online (Sandbox Code Playgroud)

实际上修复了这个问题,但在键盘再次响应之前似乎会导致 1-2 秒的延迟。这是预期的吗?

谢谢!

python listener termios pynput

5
推荐指数
0
解决办法
906
查看次数

在 Python 中使用 pynput 检查特定密钥

dpressed = 0

def on_press(key):

    if key == ('d'):
        global dpressed
        dpressed+=1
        logging.info("D: %s" % dpressed)
Run Code Online (Sandbox Code Playgroud)

当我运行此代码并按 d 时,没有任何反应,我怀疑这是因为在检查时需要将该键称为其他名称。有人知道它应该是什么吗?

python key pynput

4
推荐指数
1
解决办法
2万
查看次数

Ubuntu 20.04LTS GUI 上 Pynput 和 Pyinstaller 的问题

我有一个使用 Pynput 模块的 python 脚本。当我在 Ubuntu [20.04LTS GUI] 上从终端运行 python 脚本时,它运行完美。

$ pyinstaller --onefile vTwo.py
cd ./dist
./vTwo
Run Code Online (Sandbox Code Playgroud)

运行 ./script 时发生错误:

ImportError: this platform is not supported: No module named 'pynput.keyboard._xorg'

Try one of the following resolutions:

 * Please make sure that you have an X server running, and that the DISPLAY environment variable is set correctly
[5628] Failed to execute script vTwo
Run Code Online (Sandbox Code Playgroud)

如果有人可以就可能出现的问题向我提出建议。我看过 Pynput 要求页面,他们提到它需要 X 服务器在后台运行,这应该不是问题,因为我安装了 GUI。

还有无论如何在没有gui的系统上使用Pynput吗?

python python-3.x pynput

4
推荐指数
1
解决办法
1878
查看次数