使用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之String 类的学习

目录 1. String类的重要性 2. 常用方法 2.1 字符串常用3种构造 2.2 String对象的4种比较 1. 比较是否引用同一个对象 2. boolean equals(Object anObject) 方法&#xff1a;按照字典序比较 3. int compareTo(String s) 方法: 按照字典序进行比较 4. int compar…

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…

Eclipse 工作空间

Eclipse 工作空间 Eclipse 工作空间(Workspace)是 Eclipse IDE 中一个核心概念,它指的是一个用于组织和存储开发项目及相关文件的目录。在 Eclipse 中,所有开发活动都是围绕工作空间展开的。本文将详细介绍 Eclipse 工作空间的概念、配置、使用方法,以及如何通过优化工作…

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…

vue2知识汇总

vue2.x 0. 参考文档 https://cn.vuejs.org/v2/api/https://cn.vuejs.org/v2/guide/1. 发展历程 2014.2 诞生 2015.10 vue1.0发布 2016.4 vue2.0发布预览版&#xff0c; 10月出正式版本 2020.4 vue3.0发布预览版 9.18正式版本2. 概述 声明式渲染 --- 组件系统 ---…

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 …

【AI写作】介绍 Docker 的基本概念和优势,以及在应用程序开发中的实际应用

【AI写作】介绍 Docker 的基本概念和优势&#xff0c;以及在应用程序开发中的实际应用 浅浅的玩一下这个 AI 写作&#xff0c;本内容全为 AI 生成&#xff0c;仅为 AI 观点&#xff0c;无作者本人的观点。 Docker是一个开源的容器化平台&#xff0c;它可以轻松地将应用程序及…

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;了解它是如何将时域信号转化为频域…

力扣(leetcode)每日一题 815 公交路线 (图的宽度优先遍历变种)

815. 公交路线 - 力扣&#xff08;LeetCode&#xff09; 题干 给你一个数组 routes &#xff0c;表示一系列公交线路&#xff0c;其中每个 routes[i] 表示一条公交线路&#xff0c;第 i 辆公交车将会在上面循环行驶。 例如&#xff0c;路线 routes[0] [1, 5, 7] 表示第 0 辆…

如何将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 当使用云平…