文章目录
🚀🚀🚀学会控制鼠标和键盘是实现自动化的捷径!🚀🚀🚀
pynput是第三方库,所以在使用pynput之前需要下载pynput包。
- 下载方式1:在终端输入pip install pynput下载包
- 下载方式2:进入pypi官网:https://pypi.org➡️搜索pynput➡️选择版本➡️点击pip install pynput
- 下载方式3:点击底部Python ackages➡️搜索pynput➡️点击Install

⭐第一步:为了控制和模拟鼠标移动,所以需要从pynput中导入mouse模块。
from pynput import mouse # 导入mouse模块
⭐第二步:使用Controller()方法。
m = mouse.Controller() # 创建一个鼠标
⭐第三步:移动鼠标在屏幕上的位置。
屏幕坐标以(0,0)为基准点位于屏幕的左上角,往右移动x轴坐标增加,往左移动x轴坐标减小。往下移动y轴坐标增加,往上移动y轴坐标减小。
可以使用print()打印鼠标的位置。

1.🍭绝对位置:
m.position = (800,600) # 将鼠标移动到指定位置
print(f'鼠标位置为:{m.position}') # 打印鼠标位置
2.🍭相对位置:
m.move(100,100) # 以(0,0)或上一个position的位置为准
print(f'鼠标位置为:{m.position}') #打印鼠标位置
第四步:模拟鼠标按键:
📖方式一:
m.press(mouse.Button.left) # 按下鼠标左键(单击)
m.release(mouse.Button.left) # 松开鼠标左键
🌌补:使用press+position+release可实现拖拽功能
🌟注意:使用press按下后,必须要使用release松开。否则相对于现实中操作鼠标一直按下左键不松手
📖方式二:
m.click(mouse.Button.left, 1) # 单击鼠标左键
🙌 区别:直接完成了一次点击松手操作。
📖方式一:
m.press(mouse.Button.right) # 按下鼠标右键(单击)
m.release(mouse.Button.right) # 松开鼠标右键
📖方式二:
m.click(mouse.Button.right, 1) # 单击鼠标右键
m.click(mouse.Button.left, 2) # 双击(左键)
类似于上述将的position,x轴坐标增加往右移动,x轴坐标减小往左移动。y轴坐标增加往下移动,y轴坐标减小往上移动。
x轴使用较少,绝大部分页面不会出现左右滚动条。
m.scroll(0,2) # 向下移动
📘完整代码⬇️:
from pynput import mouse # 导入mouse模块
m = mouse.Controller() # 创建一个鼠标
m.position = (800,600) # 将鼠标移动到指定位置
print(f'鼠标位置为:{m.position}') # 打印鼠标位置
m.move(100,100) # 相对于(800,600)在移动(100,100)
print(f'鼠标位置为:{m.position}') # 打印鼠标位置
# 方式一
# m.press(mouse.Button.left) # 按下鼠标左键(单击)
# m.release(mouse.Button.left) # 松开鼠标左键
# 方式二
m.click(mouse.Button.left, 1) # 单击鼠标左键
m.press(mouse.Button.right) # 按下鼠标右键(单击)
m.release(mouse.Button.right) # 松开鼠标右键
m.click(mouse.Button.right, 1) # 单击鼠标右键
# 双击
m.click(mouse.Button.left, 2) # 双击(左键)
m.scroll(0,2) # x 左右滚动, y 上
⭐第一步:为了键盘输入,所以需要从pynput中导入keyboard模块。
from pynput import keyboard # 导入keyboard模块
⭐第二步:使用Controller()方法。
k = keyboard.Controller() # 创建一个键盘
⭐第三步:模拟按键
k.press('a') # 按下a
k.release('a') # 松开a
🌟注意:引号内可以是任意字符包括汉字,但只能是单个。后续会教大家输入一句话。
⭐第四步:按特殊键(空格,shift等)
k.press(keyboard.Key.space) # 按下空格键
k.release(keyboard.Key.space) # 松开空格键
k.press(keyboard.Key.shift) # 按下shift键
k.release(keyboard.Key.shift) # 松开shift键
⭐第五步:输入一句话
k.type('Hello everybody!')
📘完整代码⬇️:
from pynput import keyboard # 导入keyboard模块
k = keyboard.Controller() # 创建一个键盘
k.press('a') # 按下a
k.release('a') # 松开a
k.press(keyboard.Key.space) # 按下空格键
k.release(keyboard.Key.space) # 松开空格键
k.press(keyboard.Key.shift) # 按下shift键
k.release(keyboard.Key.shift) # 松开shift键
k.type('Hello everybody!')
如果你学会了这些还不知道用pynput来干什么。那我教你可以实现打开应用,自动浏览网页,与女朋友微信聊天等。应用程序是无限的,你可以使用这种方法构建任何类型的自动化工具。
🎁打开软件代码分享:https://blink.csdn.net/details/1511416
🎁微信发送信息代码分享: https://blink.csdn.net/details/1511454
假设我做了一个模块如下:m=Module.newdoclassCendend三个问题:除了对m的引用之外,还有什么方法可以访问C和m中的其他内容?我可以在创建匿名模块后为其命名吗(就像我输入“module...”一样)?如何在使用完匿名模块后将其删除,使其定义的常量不再存在? 最佳答案 三个答案:是的,使用ObjectSpace.此代码使c引用你的类(class)C不引用m:c=nilObjectSpace.each_object{|obj|c=objif(Class===objandobj.name=~/::C$/)}当然这取决于
作为我的Rails应用程序的一部分,我编写了一个小导入程序,它从我们的LDAP系统中吸取数据并将其塞入一个用户表中。不幸的是,与LDAP相关的代码在遍历我们的32K用户时泄漏了大量内存,我一直无法弄清楚如何解决这个问题。这个问题似乎在某种程度上与LDAP库有关,因为当我删除对LDAP内容的调用时,内存使用情况会很好地稳定下来。此外,不断增加的对象是Net::BER::BerIdentifiedString和Net::BER::BerIdentifiedArray,它们都是LDAP库的一部分。当我运行导入时,内存使用量最终达到超过1GB的峰值。如果问题存在,我需要找到一些方法来更正我的代
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。
尝试通过RVM将RubyGems升级到版本1.8.10并出现此错误:$rvmrubygemslatestRemovingoldRubygemsfiles...Installingrubygems-1.8.10forruby-1.9.2-p180...ERROR:Errorrunning'GEM_PATH="/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/ruby-1.9.2-p180@global:/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/rub
我有一个包含模块的模型。我想在模块中覆盖模型的访问器方法。例如:classBlah这显然行不通。有什么想法可以实现吗? 最佳答案 您的代码看起来是正确的。我们正在毫无困难地使用这个确切的模式。如果我没记错的话,Rails使用#method_missing作为属性setter,因此您的模块将优先,阻止ActiveRecord的setter。如果您正在使用ActiveSupport::Concern(参见thisblogpost),那么您的实例方法需要进入一个特殊的模块:classBlah
我正在使用puppet为ruby程序提供一组常量。我需要提供一组主机名,我的程序将对其进行迭代。在我之前使用的bash脚本中,我只是将它作为一个puppet变量hosts=>"host1,host2"我将其提供给bash脚本作为HOSTS=显然这对ruby不太适用——我需要它的格式hosts=["host1","host2"]自从phosts和putsmy_array.inspect提供输出["host1","host2"]我希望使用其中之一。不幸的是,我终其一生都无法弄清楚如何让它发挥作用。我尝试了以下各项:我发现某处他们指出我需要在函数调用前放置“function_”……这
我正在编写一个gem,我必须在其中fork两个启动两个webrick服务器的进程。我想通过基类的类方法启动这个服务器,因为应该只有这两个服务器在运行,而不是多个。在运行时,我想调用这两个服务器上的一些方法来更改变量。我的问题是,我无法通过基类的类方法访问fork的实例变量。此外,我不能在我的基类中使用线程,因为在幕后我正在使用另一个不是线程安全的库。所以我必须将每个服务器派生到它自己的进程。我用类变量试过了,比如@@server。但是当我试图通过基类访问这个变量时,它是nil。我读到在Ruby中不可能在分支之间共享类变量,对吗?那么,还有其他解决办法吗?我考虑过使用单例,但我不确定这是
当我在Rails控制台中按向上或向左箭头时,出现此错误:irb(main):001:0>/Users/me/.rvm/gems/ruby-2.0.0-p247/gems/rb-readline-0.4.2/lib/rbreadline.rb:4269:in`blockin_rl_dispatch_subseq':invalidbytesequenceinUTF-8(ArgumentError)我使用rvm来管理我的ruby安装。我正在使用=>ruby-2.0.0-p247[x86_64]我使用bundle来管理我的gem,并且我有rb-readline(0.4.2)(人们推荐的最少
我的最终目标是安装当前版本的RubyonRails。我在OSXMountainLion上运行。到目前为止,这是我的过程:已安装的RVM$\curl-Lhttps://get.rvm.io|bash-sstable检查已知(我假设已批准)安装$rvmlistknown我看到当前的稳定版本可用[ruby-]2.0.0[-p247]输入命令安装$rvminstall2.0.0-p247注意:我也试过这些安装命令$rvminstallruby-2.0.0-p247$rvminstallruby=2.0.0-p247我很快就无处可去了。结果:$rvminstall2.0.0-p247Search
我正在使用Ruby2.1.1和Rails4.1.0.rc1。当执行railsc时,它被锁定了。使用Ctrl-C停止,我得到以下错误日志:~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.2/lib/spring/client/run.rb:47:in`gets':Interruptfrom~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.2/lib/spring/client/run.rb:47:in`verify_server_version'from~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.