回答于2022-11-23
在之前的文章之中大家已经学习过了python对鼠标的全部详细操作,那么键盘作为同样重要的外置设备,一样在python内可以通过方法来模拟输入和按键。所以本篇文章所要来介绍的内容就是python控制鼠标按键实现模拟键盘输入的详细教程,一起往下看看吧。
那么键盘控制和鼠标控制一样,都是能够通过第三方库pyautogui所提供的方法来操作的。不过因为键盘操作的执行时间过快,所以需要设置一下每次键盘操作方法调用之后下个操作生效的时间间隔,示例如下:
import pyautogui as ui ui.PAUSE = 1
一、模拟键盘输入
键盘输入需要定位到浏览器网页或者是程序上面的输入栏,这一步得使用鼠标移动和点击方法来实现,具体的方法可以参考之前的文章。那么键盘输入需要调用的方法为typewrite(),它可以传入字符串类型对象以及数字两个参数。
第一个参数就是要输入的文字,而第二个则是字符之间的间隔,方法语法如下所示:
ui.typewrite('YYDS', 0.5)
二、控制键盘按键
键盘上的按键想要使用总共需要是有两个操作的,第一个是按下,第二个就是释放了。那么这两个操作可以使用两个方法来实现,这两个方法接收的参数需要一致,示例如下:
ui.keyDown('ctrl')ui.keyUp('ctrl')
实际上除了要在按下一个键之后再按其他键来形成组合快捷键,一般都是会直接使用press()这个方法。因为该方法就相当于键盘按键按下和释放的完整操作,示例如下:
ui.press('Y')
而组合快捷键也有专门的方法可以去使用,只要按照顺序传入按键对应的字符串值即可,如下所示:
ui.hotkey('ctrl','c')ui.hotkey('ctrl','v')
以上就是关于“Python如何模拟键盘输入?Python怎么控制键盘按键”的全部内容了,希望对你有所帮助。
实现了一个最简单的输入密码,enter进入的简单键盘操作登录过程,具体代码如下:
· 鼠标点击
有m.click(x, y, button, n) -- 点击,想x,y坐标,button:-1表示左键,-2表示右键,n:默认1次,2双击
m.move(x, y) -- 鼠标移动
m.screen_size() -- 获取屏幕尺寸
· 键盘操作
k.type_string('abcdefg') --输入内容
k.press_key('a') --按a键
k.release_key('a') --松开a键
k.tap_key('a') --点击a键
k.tap_key('a', n=2, interval=5) --点击a键2次,每次间隔5秒
k.tap_key(k.function_keys[5]) --功能键F5
k.press_keys([k.alt_key, 'a']) --组合按键
可以使用StringVar()对象来完成,把Entry的textvariable属性设置为StringVar(),再通过StringVar()的get()和set()函数可以读取和输出相应内容,以下为测试代码(python3.x):from tkinter import *
def submit():
print(u.get())
p.set(u.get())
root = Tk()
root.title("测试")
frame = Frame(root)
frame.pack(padx=8, pady=8, ipadx=4)
lab1 = Label(frame, text="获取:")
lab1.grid(row=0, column=0, padx=5, pady=5, sticky=W)
#绑定对象到Entry
u = StringVar()
ent1 = Entry(frame, textvariable=u)
ent1.grid(row=0, column=1, sticky='ew', columnspan=2)
lab2 = Label(frame, text="显示:")
lab2.grid(row=1, column=0, padx=5, pady=5, sticky=W)
p = StringVar()
ent2 = Entry(frame, textvariable=p)
ent2.grid(row=1, column=1, sticky='ew', columnspan=2)
button = Button(frame, text="登录", command=submit, default='active')
button.grid(row=2, column=1)
lab3 = Label(frame, text="")
lab3.grid(row=2, column=0, sticky=W)
button2 = Button(frame, text="退出", command=quit)
button2.grid(row=2, column=2, padx=5, pady=5)
#以下代码居中显示窗口
root.update_idletasks()
x = (root.winfo_screenwidth() - root.winfo_reqwidth()) / 2
y = (root.winfo_screenheight() - root.winfo_reqheight()) / 2
root.geometry("+%d+%d" % (x, y))
root.mainloop()
效果如下: