Skip to main content
 首页 » 编程设计

python之在 Python 中一起使用鼠标和键盘监听器

2025年05月04日13davidwang456

我一直在使用 pynput 库来监视鼠标点击。我面临的唯一问题是终端在按 Ctrl+C 时不会终止。我需要将键盘监听器与鼠标监听器一起使用。这是我的代码:

import os 
import time 
import re 
from pynput import mouse 
from pynput.keyboard import Key, Listener 
f=open('maniac1.txt','a') 
 
inc=1 
f.write('<mouse_new>\n') 
 
def on_click(x, y, button, pressed): 
    f=open('maniac1.txt','a') 
    if button == mouse.Button.left: 
        print 'Left' 
        f.write('left\n') 
 
    if button == mouse.Button.right: 
        print 'right' 
        f.write('right\n') 
    if button == mouse.Button.middle: 
        print 'middle' 
        f.write('middle\n') 
 
with mouse.Listener(on_click=on_click,on_scroll=on_scroll) as listener: 
    try: 
        listener.join() 
    except MyException as e: 
        print('Done'.format(e.args[0])) 

如何在按 Esc 或 Ctrl+C 后终止此代码?我使用的是 OSX。

请您参考如下方法:

创建一个不带“with”关键字的实例keyboard.Listener,以便您可以根据您的鼠标监听器启动和停止监听器。检查下面的代码,它会在鼠标右键单击后停止监听 f8 的按键。

import os 
import time 
import re 
from pynput import mouse 
from pynput.keyboard import Key, Listener 
#f=open('maniac1.txt','a') 
 
inc=1 
#f.write('<mouse_new>\n') 
from pynput import keyboard 
 
def on_functionf8(key): 
    if (key==keyboard.Key.f8): 
        print('f8 is pressed') 
 
 
key_listener = keyboard.Listener(on_release=on_functionf8) 
key_listener.start() 
 
 
def on_click(x, y, button, pressed): 
    f=open('maniac1.txt','a') 
    if button == mouse.Button.left: 
        print ('Left') 
        #f.write('left\n') 
 
    if button == mouse.Button.right: 
        key_listener.stop() 
        print ('right') 
        #f.write('right\n') 
    if button == mouse.Button.middle: 
        print ('middle') 
        #f.write('middle\n') 
 
with mouse.Listener(on_click=on_click) as listener: 
    try: 
        listener.join() 
    except MyException as e: 
        print('Done'.format(e.args[0])) 

运行程序并按 f8,您将在终端上看到“f8 is pressed”。但是右键单击并按 f8。当我们通过鼠标右键单击停止键盘监听器时,您不会看到任何打印内容。

对于苹果机:

def on_press(key): 
    try: 
        print('alphanumeric key {0} pressed'.format( 
            key.char)) 
    except AttributeError: 
        print('special key {0} pressed'.format( 
            key)) 
 
 
 
key_listener = keyboard.Listener(on_release=on_press) 

在 mac 上默认只监听 cmd、alt 等少数按键。