PyAutoGUI 键盘控制函数(2)
press(), keyDown(), and keyUp()
上一篇博客说到,可以传递一个字符给typewrite()
和write()
函数,当然不能实现类似F1
,Shift
这种多字符键盘名的模拟敲击,因为会把字符串单个字符依次模拟输入。那么如果想要敲击F1
,Shift
这种多字符键盘按键怎么办呢?
当然有解决方案,press()
, keyDown()
和 keyUp()
分别表示点击按键,按下按键,释放按键。press()
包括keyDown()
和 keyUp()
两个步骤。press()
, keyDown()
和 keyUp()
均接受一个字符串参数,表示要按下的键,键名在pyautogui.KEYBOARD_KEYS
中有定义,详见本博客附录。
>>> pyautogui.press('enter') # press the Enter key
>>> pyautogui.press('f1') # press the F1 key
>>> pyautogui.press('left') # press the left arrow key
注意:press('f1')
表示按F1
按键write('f1')
表示分别按F
键和1
键。
>>> 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
如果要连续按压多个按键,可以使用列表或者传递presses
参数,例如连续按压3次左键:
>>> pyautogui.press(['left', 'left', 'left'])
>>> pyautogui.press('left', presses=3)
当然可以添加延迟参数interval
:
>>> pyautogui.press(['left', 'left', 'left'],interval=1)
>>> pyautogui.press('left', presses=3,interval=1)
typewrite()
例如:
>>> pyautogui.typewrite('Hello world!\n', interval=secs_between_keys) # useful for entering text, newline is Enter
interval
参数用于指定每两个字符之间输入的时间间隔。当然可以存入列表,列表中每个元素表示要按下的键盘按键名,键盘列表见该博客末尾的附录。例如(先按a
,再按b
,再按c
,再按<—
,再按删除键,再按回车键,再按f1
键):
>>> pyautogui.typewrite(['a', 'b', 'c', 'left', 'backspace', 'enter', 'f1'], interval=secs_between_keys)
可见, typewrite()
传递一个字符串和write()
一样的功能,传递列表和press()
实现相同功能。
附录
键盘名列表
KEY_NAMES = [
"\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",
]