pynput包可以监听键盘消息和鼠标消息,但是你很难找到既监听鼠标消息又监听键盘消息例子。其主要原因就是大部分示例中监听鼠标和键盘消息时都采用了阻塞式的监听方式,即
listener.join()
程序调用监听器的join()方法后,即被阻塞,不再执行后面的语句,以这种方式启动监听器,只能监听在某个监听器的join()方法调用前已启动的监听器的消息。因此,除了最后一个监听器外,其他监听器不能用listener.join()的方式启动,只能用非阻塞的listener.start()的方式启动。最后一个监听器则应当以listener.join()的方式启动,以使程序执行被阻塞,防止程序直接结束。示例代码如下:
import pynput
import sys
本程序演示使用pynput库同时监控键盘事件和鼠标事件。要同时监控键盘事件和鼠标事件,
必须用非阻塞方式启动键盘监听线程和鼠标监听线程,也就是说除了最后一个监听器外,不
能用listener.join()的方式启动,只能用listener.start()的方式启动。最后一个监听器
则应当以listener.join()的方式启动,以使程序执行被阻塞,防止程序直接结束
start_x = 0
start_y = 0
#鼠标事件处理函数。鼠标左键抬起时输出鼠标左键按下和抬起时的位置
def on_click(x, y, button, pressed):
global start_x, start_y
if pressed and button == pynput.mouse.Button.left:
(start_x, start_y) = (x, y)
elif (not pressed) and (button == pynput.mouse.Button.left):
print(f'\n鼠标左键按下并抬起一次。\n按下时的位置:start_x={start_x}, ',
f'start_y={start_y}\n抬起时的位置end_x={x}3, end_y={y}')
#键盘事件处理函数。输出被按下的键,按下'e'键结束程序
def on_press(key):
print(f'按键{key}被按下\n')
if (key == pynput.keyboard.KeyCode(char = 'e')):
sys.exit()
#以非阻塞的方式启动鼠标监控
mouse_listener = pynput.mouse.Listener(on_click=on_click)
mouse_listener.start()
#最后一个监听器以阻塞方式启动
with pynput.keyboard.Listener(on_press=on_press) as keybord_listener:
keybord_listener.join()
`pynput`包可以监听键盘消息和鼠标消息,但是到目前为止在网上搜索到的示例往往都是监听了键盘消息就不能监听鼠标消息,监听了鼠标消息就不能键盘消息。其主要原因就是这些文章中的监听鼠标和键盘的示例代码都采用了阻塞式的监听方式,即 listener.join()调用了监听器的`join()`方法后,程序即被阻塞,不再执行后面的语句,因此,除了最后一个监听器外,其他监听器不能用`listener.join()`的方式启动,只能用`listener.start()`的方式启动。最后一个监听器则应当以`l
<span style="font-size:14px;">import java.awt.event.ActionEvent ;
import java.awt.event.Action
Listener
;
import java.awt.event.Window
Listener
;
import java.awt.event.WindowAdapter ;
im...
网上搜索了很多,没有见创新的,基本上是原文档的复制,本人经过摸索,基本校全面。
现总结如下。补充说明不要用os._exit or sys.exit退出,那样的话能是不能
鼠标
监听
的。
如有错误或补充欢迎交流。
另外除非你一定要用控制台程序,没有...
用于接收组件上“感兴趣”的
鼠标
事件(按下、释放、单击、进入或离开)的侦听器接口。(要跟踪
鼠标
移动和
鼠标
拖动,请
使用
Mouse
Motion
Listener
。)
旨在处理
鼠标
事件的类要么实现此接口(及其
包
含的所有方...
自学
python
的我最近想写一个能自定义的截屏程序,于是就有了下面的。主要是用来
pyn
put库,用这个来
监听
键盘
真是太简单了。
代码可能存在bug,结构不是最优的,欢迎大家指出。
# @IDE :PyCharm
# @Author :强哥
# @Date :2022/2/2 14:50
import
pyn
put
import pyautogui
import time
import tkinter as tk
from
pyn
put.
mouse
import Button, Controller
## 导入
鼠标
监听
器
from
pyn
put.
mouse
import
Listener
## ================================================
## 控制
鼠标
部分
## =================
接口
Mouse
Listener
用于接收组件上“感兴趣”的
鼠标
事件(按下、释放、单击、进入或离开)的侦听器接口。(要跟踪
鼠标
移动和
鼠标
拖动,请
使用
Mouse
Motion
Listener
。)
void
mouse
Clicked(
Mouse
Event e)
鼠标
按键在组件上单击(按下并释放)时调用。
void
mouse
Entered(
Mouse
Event e)
with open('/home/oliveryty/文档/
监听
鼠标
.txt', 'a+') as f:
f.write("from
pyn
put.
mouse
import Button, Controller as mCtr")
f.write("\n\n")
f.write("import time")
f.write("\n\n")
1. 安装
pyn
put库,可以
使用
pip安装:`pip install
pyn
put`
2. 导入
pyn
put库中的
mouse
和keyboard模块:`from
pyn
put import
mouse
, keyboard`
3.
使用
mouse
.
Listener
()和keyboard.
Listener
()方法创建
监听
器,分别
监听
鼠标
和
键盘
事件:
```
python
#
监听
鼠标
事件
def on_move(x, y):
print('
鼠标
移动到 ({0}, {1})'.format(x, y))
def on_click(x, y, button, pressed):
print('{0} 在 ({1}, {2}) {3}'.format(button, x, y, pressed))
def on_scroll(x, y, dx, dy):
print('在 ({0}, {1}) 滚动 ({2}, {3})'.format(x, y, dx, dy))
with
mouse
.
Listener
(on_move=on_move, on_click=on_click, on_scroll=on_scroll) as
listener
:
listener
.join()
#
监听
键盘
事件
def on_press(key):
print('按下 {0}'.format(key.char))
except AttributeError:
print('按下 {0}'.format(key))
def on_release(key):
print('{0} 松开'.format(key))
with keyboard.
Listener
(on_press=on_press, on_release=on_release) as
listener
:
listener
.join()
4. 启动
监听
器,
使用
`
listener
.join()`方法等待事件发生。
注意:
使用
pyn
put
监听
鼠标
和
键盘
事件需要在终端下运行,而非在IDE中运行。
做工程预决算的看过来——只需输入计算式,VBA立即帮你在指定位置的单元格显示出结果
胡敏125: