我一直在尝试为英雄联盟制作一个机器人,使用Python3和pyautogui。我可以使用pywin32使机器人左键单击和右键单击,但是使用pyautogui的按键无法正常工作。pyautogui能够在点击文本框时输入,但无法使用其他能力。具体来说,level_up
函数不起作用。以下是我的代码:
from pyautogui import *
import pyautogui
import time
import keyboard
import numpy as np
import random
import win32api, win32con
def click_right(x,y):#works fine
win32api.SetCursorPos((x,y))
win32api.mouse_event(win32con.MOUSEEVENTF_RIGHTDOWN,0,0)
time.sleep(.01)
win32api.mouse_event(win32con.MOUSEEVENTF_RIGHTUP,0,0)
def click_left(x,y):#works fine
win32api.SetCursorPos((x,y))
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,0,0)
time.sleep(.1)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,0,0)
def type(word):
for char in word:
pyautogui.keyDown(char)
time.sleep(.05)
pyautogui.keyUp(char)
def buy_item(item):#item is a string, works fine
click_left(1209,998)#open shop
time.sleep(.2)
click_left(313,281)#click to search for item
time.sleep(.2)
type(item)#type item name
time.sleep(.1)
click_right(318,354)#buy item
time.sleep(.1)
click_left(1170,217)#close shop
def buy_items(items):#items is a list of strings, works fine
click_left(1209, 998) # open shop
time.sleep(.2)
for item in items:
click_left(313, 281) # search item
time.sleep(.2)
type(item)
time.sleep(.1)
click_right(318, 354)
time.sleep(.1)
click_left(1170, 217)
#doesn't work
def level_up(ability):#ability is a char in 'qwer'
with pyautogui.hold('ctrl'):
pyautogui.press(['q'])
def main():
time.sleep(3)
buy_items(['dagger', 'zeal', 'cloth'])
time.sleep(1)
level_up('q')
#
if __name__ == '__main__':
main()
字符串
有没有一种方法可以正确地做到这一点?有没有一个比pyautogui更好的软件包可以使用?
1条答案
按热度按时间xcitsw881#
我从
pyautogui
切换到pydirectinput
,它现在工作。字符串