使用python写按键程序

主要用到的python库是PyAutoGUI,输入一下命令安装即可。

pip install pyautogui

PyAutoGUI官网:https://pyautogui.readthedocs.io/en/latest/

下面做一些功能介绍,介绍部分的内容均来自官网。

部分函数简介

注意:下面函数大部分没有把参数列全,只列了常用的一些参数。

  • size():获取显示器的分辨率信息,返回两个整数(width, height)
screenWidth, screenHeight = pyautogui.size()
  • position():返回当前鼠标位置信息,也是两个整数(x, y)
    • PS:写按键程序的时候经常需要获取坐标信息,很多截图功能附带坐标信息,但假如手边没有趁手的截图工具,那可以用这条命令凑合一下,把鼠标移动到目标位置,然后执行该命令。
currentMouseX, currentMouseY = pyautogui.position()
  • moveTo(x=None, y=None, duration=0.0):移动鼠标到(x, y)位置,duration是指花多长时间移动过去,单位是秒,默认是0,也就是瞬间移动到。

    • 注意:如果设置有屏保,瞬移不会刷新屏保的触发时间,也就是说过上一会就回进入屏保状态,如果不想进入屏保,那就要给duration设置个大于0的数值。
  • move(xOffset=None, yOffset=None, duration=0.0):是moveRel()函数的替代名称,作用是将鼠标从当前位置出发,移动(xOffset, yOffset)的距离,duration的作用同moveTo

  • click(x=None, y=None, clicks=1, interval=0.0, button=PRIMARY, duration=0.0):点击一下,点击的意思就是按下并快速松开。

    • 如果设置了(x, y),那就移动到该位置点击,如果不设置(x,y),那就是在当前位置点击一下。
    • clicks表示点击次数。
    • interval表示点击间隔,当clicks大于1时才有用。
    • button表示点击哪个键,取值有[LEFT, MIDDLE, RIGHT, PRIMARY, SECONDARY],PRIMARY和SECONDARY因鼠标设置而不同,对于常用的右手设置,PRIMARY就是左键,而左手鼠标的话,PRIMARY就是右键。
    • duration是移动到(x, y)所花的时间。
  • doubleClick(x=None, y=None, interval=0.0, button=LEFT, duration=0.0)

  • leftClick(x=None, y=None, interval=0.0, duration=0.0):左键点击一次,是对click()在特定参数下的封装。

    • 这个函数里的interval比较让人迷惑,因为次数写死了是1,所以interval感觉没什么用。
  • rightClick(x=None, y=None, interval=0.0, duration=0.0)

  • write(message, interval=0.0):是typewrite()函数的替代名称,作用是输入一段字符串,即message。

  • keyDown(key):按下一个键。

  • keyUp(key):松开一个键。

  • press((keys, presses=1, interval=0.0):点击按键并松开,注意keys用的是复数,所以它可以是多个值。press相当于一系列keyDown()和keyUp的组合。

    • presses:点击次数
    • interval:presses的间隔。注意此interval只作用在presses之间,不作用于keys之间。
  • hold(keys):创建一个按下一系列键的环境。

    • keyDown,keyUp,press,hold需要结合例子才比较容易理解,下面一系列代码的效果是等同的,都是实现按下shift的同时点击三次左方向键,然后松开shift。
    pyautogui.keyDown('shift')  # hold down the shift key
    pyautogui.press('left')     # press the left arrow key
    pyautogui.press('left')     # press the left arrow key
    pyautogui.press('left')     # press the left arrow key
    pyautogui.keyUp('shift')    # release the shift key
    
    pyautogui.keyDown('shift')  # hold down the shift key
    pyautogui.press(['left', 'left', 'left'])
    pyautogui.keyUp('shift')    # release the shift key
    
    with pyautogui.hold('shift'):pyautogui.press(['left', 'left', 'left'])
    
  • hotKey():按下组合键并松开,组合键以顺序按下,以倒序松开。

    pyautogui.hotkey('ctrl', 'c')
    
  • screenshot(imageFilename=None, region=None):对屏幕进行截屏,返回一个图像,返回的图像是PIL.Image对象。

    • region如果是None就对整个屏幕截屏,如果不想截整个屏幕,那么region的格式是4个数字,分别表示(left, top, width, height)
  • scroll(clicks, x=None, y=None):控制鼠标滚轮的滚动。clicks表示滚动次数,如果>0表示向上滚动,如果<0表示向下滚动,(x, y)如果设置的话就移动到该位置并滚动。

    pyautogui.scroll(10)   # scroll up 10 "clicks"
    pyautogui.scroll(-10)  # scroll down 10 "clicks"
    pyautogui.scroll(10, x=100, y=100)  # move mouse cursor to 100, 200, then scroll up 10 "clicks"
    
  • FAILSAFE:这不是个函数,该参数的意思是,当把鼠标移动到某个位置时会把程序挂掉(默认是屏幕左上角),该参数的默认设置为(做调试的时候还是很有用的,不然在密集的自动操作下,你可能都没有机会手动终止程序):

    FAILSAFE = True
    FAILSAFE_POINTS = [(0, 0)]
    

    如果担心不小心碰到鼠标让程序挂掉,那就把参数设置成False:

    pyautogui.FAILSAFE = False
    

key的名称列表

跟键盘按键相关的函数,如keyDown(), keyUp(), press(), hotkey()等需要接收key的名称作为参数,key的名称是字符或者字符串,罗列如下:

['\t', '\n', '\r', ' ', '!', '"', '#', '$', '%', '&', "'", '(',
')', '*', '+', ',', '-', '.', '/', '0', '1', '2', '3', '4', '5', '6', '7',
'8', '9', ':', ';', '<', '=', '>', '?', '@', '[', '\\', ']', '^', '_', '`',
'a', 'b', 'c', 'd', 'e','f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',
'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '{', '|', '}', '~',
'accept', 'add', 'alt', 'altleft', 'altright', 'apps', 'backspace',
'browserback', 'browserfavorites', 'browserforward', 'browserhome',
'browserrefresh', 'browsersearch', 'browserstop', 'capslock', 'clear',
'convert', 'ctrl', 'ctrlleft', 'ctrlright', 'decimal', 'del', 'delete',
'divide', 'down', 'end', 'enter', 'esc', 'escape', 'execute', 'f1', 'f10',
'f11', 'f12', 'f13', 'f14', 'f15', 'f16', 'f17', 'f18', 'f19', 'f2', 'f20',
'f21', 'f22', 'f23', 'f24', 'f3', 'f4', 'f5', 'f6', 'f7', 'f8', 'f9',
'final', 'fn', 'hanguel', 'hangul', 'hanja', 'help', 'home', 'insert', 'junja',
'kana', 'kanji', 'launchapp1', 'launchapp2', 'launchmail',
'launchmediaselect', 'left', 'modechange', 'multiply', 'nexttrack',
'nonconvert', 'num0', 'num1', 'num2', 'num3', 'num4', 'num5', 'num6',
'num7', 'num8', 'num9', 'numlock', 'pagedown', 'pageup', 'pause', 'pgdn',
'pgup', 'playpause', 'prevtrack', 'print', 'printscreen', 'prntscrn',
'prtsc', 'prtscr', 'return', 'right', 'scrolllock', 'select', 'separator',
'shift', 'shiftleft', 'shiftright', 'sleep', 'space', 'stop', 'subtract', 'tab',
'up', 'volumedown', 'volumemute', 'volumeup', 'win', 'winleft', 'winright', 'yen',
'command', 'option', 'optionleft', 'optionright']

示例

一个自动刷新网页的小程序如下(仅通过moveTo和leftClick两个函数实现):
注意不同分辨率的屏幕,或者浏览器本身的一些size设置不同的情况下,按钮坐标会不一样,因此可能需要改一下下面POS(position)相关的参数。

# -*- coding: utf-8 -*-
import pyautogui as pgREFREASH_BUTTON_POS = (93, 62)
WEBPAGE_POS = ((140, 20),(380, 20)
)def refresh_webpage(webpage_position):x, y = webpage_positionpg.moveTo(x, y, duration=0.5)pg.leftClick(duration=0.05)pg.sleep(0.5)x, y = REFREASH_BUTTON_POSpg.moveTo(x, y, duration=0.5)pg.leftClick(duration=0.05)pg.sleep(0.5)def main():pg.FAILSAFE = Falsecnt = 0while True:cnt += 1pg.sleep(5)for pos in WEBPAGE_POS:refresh_webpage(pos)pg.sleep(5)if __name__ == '__main__':main()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/54694.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java语言程序设计基础篇_编程练习题***18.33 (游戏:骑士旅途的动画)

目录 ***18.33 (游戏:骑士旅途的动画) 习题思路 代码示例 动画演示 ***18.33 (游戏:骑士旅途的动画) 为骑士旅途的问题编写一个程序&#xff0c;该程序应该允许用户将骑士放到任何一个起始正方形&#xff0c;并单击Solve按钮&#xff0c;用动画展示骑士沿着路径的移动&…

深度学习之表示学习 - 贪心逐层无监督预训练篇

引言 在人工智能的浩瀚星空中&#xff0c;深度学习以其强大的数据处理与模式识别能力&#xff0c;成为了一颗璀璨的明星。而表示学习&#xff0c;作为深度学习的核心基石之一&#xff0c;正引领着这一领域不断突破边界。表示学习旨在将原始数据转换为更加抽象、更有意义的特征…

leetcode第二十六题:删去有序数组的重复项

给你一个 非严格递增排列 的数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使每个元素 只出现一次 &#xff0c;返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。 考虑 nums 的唯一元素的数量为 k &#xff0c;你…

Rasa对话模型——做一个语言助手

1、Rasa模型 1.1 模型介绍 Rasa是一个用于构建对话 AI 的开源框架&#xff0c;主要用于开发聊天机器人和语音助手。Rasa 提供了自然语言理解&#xff08;NLU&#xff09;和对话管理&#xff08;DM&#xff09;功能&#xff0c;使开发者能够创建智能、交互式的对话系统。 1.2…

Apache Iceberg 数据类型参考表

Apache Iceberg 概述-链接 Apache Iceberg 数据类型参考表 数据类型描述实例方法注意事项BOOLEAN布尔类型&#xff0c;表示真或假true, false用于条件判断&#xff0c;例如 WHERE is_active true。确保逻辑条件的正确性。INTEGER32位有符号整数42, -7可用于计算、聚合&#xf…

【系统架构设计师】专题:中间件技术

更多内容请见: 备考系统架构设计师-核心总结目录 文章目录 一、中间件概述二、中间件特点三、中间件的分类四、中间件产品介绍一、中间件概述 中间件(middleware) 是基础软件的一大类,属于可复用软件的范畴。顾名思义,中间件处在操作系统、网络和数据库之上,应用软件的下层…

着色器ShaderMask

说明 实现一个渐变进度条&#xff0c;要求&#xff1a; 颜色渐变的过程是循序渐进的&#xff0c;而不是看起来像是将渐变条逐渐拉长了。 效果 源码 // 渐变进度条Stack(children: [// 背景色板Container(width: 300,height: 8,decoration: BoxDecoration(borderRadius: Bord…

ollama 部署教程(window、linux)

目录 一、官网 二、安装方式一&#xff1a;window10版本下载 三、安装方式二&#xff1a;linux版本docker 四、 模型库 五、运行模型 六、API服务 七、python调用 ollama库调用 langchain调用 requests调用 aiohttp调用 八、模型添加方式 1.线上pull 2.导入 GGU…

Parallels Desktop 20 for Mac 推出:完美兼容 macOS Sequoia 与 Win11 24H2

Parallels Desktop 20 for Mac 近日正式发布&#xff0c;这一新版本不仅全面支持 macOS Sequoia 和 Windows 11 24H2&#xff0c;还在企业版中引入了一个全新的管理门户。新版本针对 Windows、macOS 和 Linux 虚拟机进行了多项改进&#xff0c;其中最引人注目的当属 Parallels …

C++编程语言:基础设施:源文件和程序(Bjarne Stroustrup)

第15章 源文件和程序 (Source Files and Programs) 目录 15.1 单独编译(Separate Compilation) 15.2 链接(Linkage) 15.2.1 文件局部名(File-Local Names) 15.2.2 头文件(Header Files) 15.2.3 一次定义原则(The One-Definition Rule) 15.2.4 标准库头文件 1…

基于YOLOv8+LSTM的商超扶梯场景下行人安全行为姿态检测识别

基于YOLOv8LSTM的商超扶梯场景下行人安全行为姿态检测识别 手扶电梯 行为识别 可检测有人正常行走&#xff0c;有人 跌倒&#xff0c;有人逆行三种行为 跌倒检测 电梯跌倒 扶梯跌倒 人体行为检测 YOLOv8LSTM。 基于YOLOv8LSTM的商超扶梯场景下行人安全行为姿态检测识别&#xf…

STM32上实现FFT算法精准测量正弦波信号的幅值、频率和相位差(标准库)

在研究声音、电力或任何形式的波形时&#xff0c;我们常常需要穿过表面看本质。FFT&#xff08;快速傅里叶变换&#xff09;就是这样一种强大的工具&#xff0c;它能够揭示隐藏在复杂信号背后的频率成分。本文将带你走进FFT的世界&#xff0c;了解它是如何将时域信号转化为频域…

如何将Excel表格嵌入Web网页在线预览、编辑并保存到自己服务器上?

猿大师办公助手作为一款专业级的网页编辑Office方案&#xff0c;不仅可以把微软Office、金山WPS和永中Office的Word文档内嵌到浏览器网页中实现在线预览、编辑保存等操作&#xff0c;还可以把微软Office、金山WPS和永中Office的Excel表格实现网页中在线预览、编辑并保存到服务器…

python中ocr图片文字识别样例(二)

一、说明 本次解决图片相关出现中文乱码问题&#xff0c;属于上篇文章的优化&#xff0c;前提条件依赖上篇文章的包&#xff0c;当然ocr的具体应用场景很多&#xff0c;根据自身需求进行调整 二、具体实现 2.1 代码实现&#xff1a; # -*- coding: utf-8 -*- import easyoc…

3.《DevOps》系列K8S部署CICD流水线之部署MetalLB负载均衡器和Helm部署Ingress-Nginx

架构 服务器IP服务名称硬件配置192.168.1.100k8s-master8核、16G、120G192.168.1.101k8s-node18核、16G、120G192.168.1.102k8s-node28核、16G、120G192.168.1.103nfs2核、4G、500G操作系统:Rocky9.3 后续通过K8S部署GitLab、Harbor、Jenkins 为什么使用MetalLB 当使用云平…

在vue中:style 的几种使用方式

在日常开发中:style的使用也是比较常见的&#xff1a; 亲测有效 1.最通用的写法 <p :style"{fontFamily:arr.conFontFamily,color:arr.conFontColor,backgroundColor:arr.conBgColor}">{{con.title}}</p> 2.三元表达式 <a :style"{height:…

如何快速连接超2100家国内外快递物流公司、实现查询结果翻译为中/英文?

近年来&#xff0c;中国企业正不断加快“出海”步伐&#xff0c;“中企出海”也成为了2024年最重要的投资主题之一。 百递云API开放平台深刻理解这一趋势&#xff1a;在我们的客户群体中&#xff0c;既有贸易规模增长超数倍的跨境电商&#xff0c;还有国际业务越来越成为增长新…

ADB 安装教程:如何在 Windows、macOS 和 Linux 上安装 Android Debug Bridge

目录 一、ADB 介绍 二、Windows 系统安装 ADB 1. 下载 ADB 2. 解压文件 3. 验证 ADB 安装 4. 配置环境变量 5. 验证全局 ADB 使用 三、macOS 系统安装 ADB 1. 下载 ADB 2. 解压文件 3. 配置环境变量 4. 验证 ADB 安装 四、Linux 系统安装 ADB 1. 使用包管理器安装…

C++初阶学习——探索STL奥秘——模拟实现list类

1、基本框架 list 由三个类构建而成: 节点类:每个节点必须的三部分(指向前一个节点的指针、指向后一个节点的指针、当前节点存储的数据) 迭代器类:此时的迭代器为双向迭代器&#xff0c;比较特殊&#xff0c;需要对其进行封装&#xff0c;如 it并非使迭代器单纯向后移动&…

Python气象辐射光谱能量平衡模型

&#x1f3af;要点 根据温室模型&#xff0c;计算不同情景下辐射通量和评估能量平衡&#xff0c;构建复杂温室模型计算计算和绘图大气、海洋、陆地表面和海冰复合模型数据建立简单能量平衡情景模型&#xff0c;并根据模型计算释放温度和时滞&#xff0c;计算并绘制地面辐射和吸…