相关文章推荐
爱吹牛的钥匙  ·  linux ...·  2 年前    · 
小胡子的荔枝  ·  No module named ...·  2 年前    · 

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中运行。
假定你的计算式中内容如下: 234[iii函证]+589[dsdsds] 其中[]里面的内容是你的备注,你需要删除它。你可以将On Error GoTo er 语句下面的tmp = Cells(Target.Row, Target.Column)替换成下面几条的语句: txt = Cells(Target.Row, Target.Column) '记录单元格中原来的内容 Cells(Target.Row, Target.Column) .Replace What:="[*]", Replacement:="" ' 去掉注释 tmp = Cells(Target.Row, Target.Column) ' 记录去掉注释后的字符串 Cells(Target.Row, Target.Column) = txt ' 恢复元单元格中的内容 做工程预决算的看过来——只需输入计算式,VBA立即帮你在指定位置的单元格显示出结果 胡敏125: 如何忽略[]中的内容,因为有时候计算要备注