def output_doulist(input_list): # 1. find button and change focus in browser button_pos = pyautogui.locateOnScreen('output/add_button.png') if not button_pos: # no valid button print '没有找到有效的"添加内容"按钮, 请检查后再次导出.' return elif len(list(pyautogui.locateAllOnScreen('output/add_button.png'))) > 1: # more than one valid button print '屏幕中有多个有效的"添加内容"按钮, 请检查后再次导出.' return else: # valid input: only one button available # remaining issue: the picture is not alwas found in screen...that's strange. pyautogui.click(button_pos) for i in input_list: # 2. press button time.sleep(4) pyautogui.click(button_pos) # 3. write link time.sleep(2) pyautogui.typewrite(i) pyautogui.press('enter') # 4. add to Doulist time.sleep(2) pyautogui.press('tab') pyautogui.press('tab') pyautogui.press('tab') pyautogui.press('enter') print 'iDoulist: 书籍列表已被添加到屏幕上的豆列中.'
def getOrders(): """Scans the screen for orders being made. Returns a dictionary with a (left, top, width, height) tuple of integers for keys and the order constant for a value. The order constants are ONIGIRI, GUNKAN_MAKI, CALIFORNIA_ROLL, SALMON_ROLL, SHRIMP_SUSHI, UNAGI_ROLL, DRAGON_ROLL, COMBO.""" orders = {} for orderType in (ALL_ORDER_TYPES): allOrders = pyautogui.locateAllOnScreen(imPath('%s_order.png' % orderType), region=(GAME_REGION[0] + 32, GAME_REGION[1] + 46, 558, 44)) for order in allOrders: orders[order] = orderType return orders
def test(): i = 0 while i < 5: i = i + 1 print pyautogui.position() #window = pyautogui.locateCenterOnScreen('wood.png') windows = pyautogui.locateAllOnScreen('key.png') #if window is None: # sys.exit('Could not find game on screen. Is the game visible?') for window in windows: l = window[0] t = window[1] w = window[2] h = window[3] time.sleep(0.1) pyautogui.moveTo(l+w/2, t+h/2)
def locate_on_screen(needle, locate_all=False, grayscale=False): """ Locate image on the screen Args: needle (Image): The image to find grayscale (Optional[bool]): Use grayscale in matching locate_all (Optional[bool]): Locate All ? Returns: Tuple: if found (x, y, width, height) of matching region , otherwise None """ if locate_all: return pyautogui.locateAllOnScreen(needle, grayscale=grayscale) else: return pyautogui.locateOnScreen(needle, grayscale=grayscale)
def check(): checkBoxNumber = list(pyautogui.locateAllOnScreen('checkBox.png')) if checkBoxNumber: failedLabel.pack_forget() amount = len(checkBoxNumber) for b in range(0, amount): checkBox = pyautogui.locateCenterOnScreen('checkBox.png') pyautogui.moveTo(checkBox) pyautogui.click(checkBox, button='left') if(b == 0): pyautogui.click(checkBox, button='left') deleteBtn = pyautogui.locateCenterOnScreen('deleteBtn.png') print(deleteBtn) pyautogui.moveTo(deleteBtn, duration=0.25) pyautogui.click(deleteBtn, button='left') else: failedLabel.pack()
def locateItems(item): windows = pyautogui.locateAllOnScreen(item) arr = [] for win in windows: l = win[0] t = win[1] w = win[2] h = win[3] #pyautogui.moveTo(l+w/2, t+h/2) obj = { 'x': int((l+w/2 - origin['x'])), 'y': int((t+h/2 - origin['y'])) } obj['x'] = int(obj['x'] / 87.5) obj['y'] = int(obj['y'] / 87.5) #print obj arr.append(obj) return arr
x = 4 go = input('enter:') for i in range(4): print(x) time.sleep(1) x -= 1 pyautogui.click(773, 1051) random_key = ['w', 'a', 's', 'd'] pyautogui.hotkey('enter') pyautogui.hotkey('enter') pyautogui.hotkey('e') while True: name_box = pyautogui.locateOnScreen('name box.png', confidence=0.7) if name_box is None: square1 = pyautogui.locateAllOnScreen('square1.png', confidence=0.7) square = list(square1) print(len(square)) if len(square) != 0: for i in square: pyautogui.moveTo(pyautogui.center(i)) else: x = choice(random_key) y = choice(random_key) z = choice(random_key) a = choice(random_key) pyautogui.keyDown(x, 2) pyautogui.keyDown(y, 2) pyautogui.keyDown(z, 3) pyautogui.keyDown(a, 2) pyautogui.keyUp(x)
def read_board(self, window): """ Returns 2D numpy array of the board -1 : Clear tile 0 : Hidden tile 1 : One neighbor is a bomb 2 : Two neighbors are bombs 3,4,5 etc... 9 : Bomb(flagged) """ # Get locations for each type of tile clears = list( pg.locateAllOnScreen("images/clear.png", region=window, confidence=0.95)) hiddens = list( pg.locateAllOnScreen("images/hidden.png", region=window, confidence=0.95)) ones = list( pg.locateAllOnScreen("images/one.png", region=window, confidence=0.95)) twos = list( pg.locateAllOnScreen("images/two.png", region=window, confidence=0.95)) threes = list( pg.locateAllOnScreen("images/three.png", region=window, confidence=0.95)) fours = list( pg.locateAllOnScreen("images/four.png", region=window, confidence=0.95)) fives = list( pg.locateAllOnScreen("images/five.png", region=window, confidence=0.95)) bombs = list( pg.locateAllOnScreen("images/flag.png", region=window, confidence=0.95)) board_data = [] # Add labels to each type of tile (Box objects) # -1 is a clear tile, 0 is a hidden tile, 1 is one, etc... for lst, name in zip( [clears, hiddens, ones, twos, threes, fours, fives, bombs], [-1, 0, 1, 2, 3, 4, 5, 9]): for tile in lst: board_data.append([tuple(pg.center(tile)), name]) # Sort data by positiion(first by y position, then by x for ties) board_sorted = sorted(board_data, key=lambda x: (x[0][1], x[0][0])) # Create array that represents the minesweeper board and fill it final = np.empty(self.nrows * self.ncols, dtype=int) for i in range(len(final)): final[i] = board_sorted[i][1] # Reshape the 1D array into the correct matrix shape final = final.reshape(self.nrows, self.ncols) self.data = final self.raw_data = final.copy()
import pyautogui, time pyautogui.FAILSAFE = True loc = pyautogui.locateOnScreen('box.png') while loc == None: time.sleep(0.1) loc = pyautogui.locateOnScreen('box.png') for loc_i in pyautogui.locateAllOnScreen('box.png'): print(loc_i) center = pyautogui.center(loc_i) pyautogui.click(center)
["wmrhwfhn61", "outlook.com", "bhsvi39"], ["helghfah17", "opera.com", "wdsha45"], ["ggetjaco62", "opera.com", "rqdes11"]] Acc2 = Accounts(list_of_accounts, saved_client_regions) Acc2.execute_logins() print(Acc2.account_memory) pyautogui.moveTo((1, 1), duration=0.2) breaker_condition = 0 # Looks for click to play button on all of screen while True: click_to_play_buttons_active = list( pyautogui.locateAllOnScreen('click_to_play.png', confidence=0.95)) # Checks if each client is logged in if len(saved_client_regions) == len( click_to_play_buttons_active) or breaker_condition > 200: for i in click_to_play_buttons_active: click_to_play_buttons_active_center = pyautogui.center(i) pyautogui.moveTo(click_to_play_buttons_active_center, duration=0.2) pyautogui.click() breaker_condition = 0 break breaker_condition += 1 print(breaker_condition) while True:
def first_run(): coordinates = runescape.find_window() client = runescape.RunescapeInstance(coordinates) """ Ignore this mess, its a hardcoded image detection based automation script to place an infeasable order, and thus be able to collect coordinate data about every button that comes up """ coordinates = pyautogui.locateOnScreen('./resources/regions/exchange/exchange_window.png',region=client.coordinates) buy_button = pyautogui.locateOnScreen('./resources/regions/exchange/buy_button.png', region=coordinates) sell_button = pyautogui.locateOnScreen('./resources/regions/exchange/sell_button.png', region=coordinates) t = buy_button mouse.all_in_one(*t) time.sleep(1) back_button = pyautogui.locateOnScreen('./resources/regions/exchange/back_button.png',region=coordinates) confirm_button = pyautogui.locateOnScreen('./resources/regions/exchange/confirm_button.png', region=coordinates) set_amount_button, set_price_button = list(pyautogui.locateAllOnScreen('./resources/regions/exchange/set_price_button.png',region=coordinates))[:2] percent_up_button = pyautogui.locateOnScreen('./resources/regions/exchange/procent_up_button.png',region=coordinates) percent_down_button = pyautogui.locateOnScreen('./resources/regions/Exchange/procent_down_button.png',region=coordinates) x,y,z,w = pyautogui.locateOnScreen("./resources/regions/exchange/first_item.png") keyboard.write("Mithril bar", str) mouse.all_in_one(x+10,y+5,z,w) mouse.all_in_one(*set_price_button) time.sleep(1) keyboard.write(1, int) time.sleep(1) keyboard.press("enter") mouse.all_in_one(*confirm_button) time.sleep(1) try: mouse.all_in_one(*pyautogui.locateOnScreen("./resources/regions/chat/trade.png")) mouse.all_in_one(*back_button) except TypeError as e: pass chat_window = pyautogui.locateOnScreen('./resources/regions/chat/chat_window.png', region=client.coordinates) mouse.all_in_one(*t) time.sleep(1) item_slot_1, item_slot_2 = list(pyautogui.locateAllOnScreen('./resources/regions/exchange/item_slot.png',region=coordinates))[:2] abort_button = pyautogui.locateOnScreen('./resources/regions/Exchange/abort_button.png',region=coordinates) mouse.all_in_one(*abort_button) mouse.all_in_one(*back_button) time.sleep(1) collect_button = pyautogui.locateOnScreen('./resources/regions/Exchange/collect_button.png',region=coordinates) mouse.all_in_one(*collect_button) dynamic_coordinates = { "coordinates" : "{0}".format( client.coordinates, coordinates), "buy_button" : "{0}".format( utils.dynamic_coordinate_converter(client.coordinates, buy_button, '-')), "sell_button": "{0}".format( utils.dynamic_coordinate_converter(client.coordinates, sell_button, '-')), "back_button": "{0}".format( utils.dynamic_coordinate_converter(client.coordinates, back_button, '-')), "confirm_button": "{0}".format( utils.dynamic_coordinate_converter(client.coordinates, confirm_button, '-')), "set_amount_button": "{0}".format( utils.dynamic_coordinate_converter(client.coordinates, set_amount_button, '-')), "set_price_button": "{0}".format( utils.dynamic_coordinate_converter(client.coordinates, set_price_button, '-')), "chat_window" : "{0}".format( utils.dynamic_coordinate_converter(client.coordinates, chat_window, '-')), "percent_up_button": "{0}".format( utils.dynamic_coordinate_converter(client.coordinates, percent_up_button, '-')), "percent_down_button": "{0}".format( utils.dynamic_coordinate_converter(client.coordinates, percent_down_button, '-')), "abort_button": "{0}".format( utils.dynamic_coordinate_converter(client.coordinates, abort_button, '-')), "item_slot_1" : "{0}".format( utils.dynamic_coordinate_converter(client.coordinates, item_slot_1, '-')), "item_slot_2": "{0}".format( utils.dynamic_coordinate_converter(client.coordinates, item_slot_2, '-')), } json.dump(dynamic_coordinates, open("./data/dynamic_coordinates.json", 'w'))
import pyautogui type_region = (324, 3, 111, 692) def all_sell(): '''list all sells''' w_sell = list(pyautogui.locateAllOnScreen('w_sell.png', region=type_region)) g_sell = list(pyautogui.locateAllOnScreen('g_sell.png', region=type_region)) h_sell = list(pyautogui.locateAllOnScreen('h_sell.png', region=type_region)) all_sells = list(w_sell + g_sell + h_sell) return all_sells while all_sell() != []: print 'all sell', all_sell() for j in list(pyautogui.locateAllOnScreen('w_sell.png', region=type_region)): print '\nw_slell = ', j xt, yt, w, l = j pyautogui.moveTo(xt, yt, duration=0.02) print 'moved to %r, %r' % (xt, yt) pyautogui.moveRel(957, None, duration=0.02) print 'moved to %r, %r' % (xt+957, yt) pyautogui.click(duration=0.02) print 'clicked on', pyautogui.position() time.sleep(2) print 'slept for 2 seconds' break for j in list(pyautogui.locateAllOnScreen('g_sell.png', region=type_region)): print '\ng_slell = ', j xt, yt, w, l = j
# encoding: UTF-8 import webbrowser,time import pyautogui pyautogui.FAILSAFE = True j = 0 for i in range(234, 261): url = 'https://www.uumnt.cc/meinv/list_' + str(i) + '.html' webbrowser.open(url) while True: if len(list(pyautogui.locateAllOnScreen('webtitle.png'))) == j+1: x, y = pyautogui.locateCenterOnScreen('uumnt.png') pyautogui.moveTo(x,y) pyautogui.rightClick() pyautogui.moveTo(None, y + 313) pyautogui.moveTo(x + 390, None, 0.5) pyautogui.click() time.sleep(2) break else: time.sleep(0.3) j += 1 if j == 30: time.sleep(16) x, y = pyautogui.locateCenterOnScreen('webclosed.png') pyautogui.click(x, y) pyautogui.moveTo(600, 600) j = 0 time.sleep(16) x, y = pyautogui.locateCenterOnScreen('webclosed.png') pyautogui.click(x, y)
password.send_keys('NEEDS SECRET KEY FILE') browser.find_element_by_id("btnLogin").click() course = WebDriverWait(browser, 10).until( EC.presence_of_element_located((By.LINK_TEXT, "Launch"))) course.click() browser = browser.switch_to_alert() #install flash player #click to allow flash player again. while True: if list(pyautogui.locateAllOnScreen('check2.png', grayscale=True)): print 'check 2 found' pyautogui.click(520, 121, button='left') elif list(pyautogui.locateAllOnScreen('check1.png', grayscale=True)): print 'check 1 found' pyautogui.click(520, 121, button='left') elif list(pyautogui.locateAllOnScreen('check3.png', grayscale=True)): print 'check 3 found' pyautogui.click(520, 121, button='left') elif list(pyautogui.locateAllOnScreen('check4.png', grayscale=True)): print 'check 4 found' pyautogui.click(520, 121, button='left') elif list(pyautogui.locateAllOnScreen('check5.png', grayscale=True)): print 'check 5 found' pyautogui.click(881, 118, button='left') elif list(pyautogui.locateAllOnScreen('check6.png', grayscale=True)):
def __init__(self): self.regions = list( pyautogui.locateAllOnScreen('open_screen.png', confidence=0.95))
import pyautogui import time # time.sleep(5) width, height = pyautogui.size() iimi = 630, 750 pass_field = 700, 370 ok_button = 760, 408 entry = 65, 35 entry_statistics_report = 150, 210 print(f"Screen size is {width} x {height}") im = pyautogui.locateAllOnScreen('stop.png') print(list(im)) # stop = pyautogui.center(im) # print(stop) # pyautogui.click(iimi) # time.sleep(1) # pyautogui.typewrite('1795343', 0.05) # pyautogui.click(pass_field) # pyautogui.typewrite('A12345', 0.05) # pyautogui.typewrite(['enter']) # # pyautogui.click(ok_button) # # time.sleep(8) # pyautogui.typewrite('Reg0038', 0.05) # pyautogui.typewrite(['enter']) # # time.sleep(5)
# keyboard, screen GUI tutorial, simple guides. Modify as per your needs '''# takes and returns screen pixels im = pyautogui.screenshot() print(im.getpixel((0, 0))) print(im.getpixel((50, 200))) # touple representing position returns RGB touple value print(pyautogui.pixelMatchesColor(50, 200, (130, 135, 144))) # x,y, RGB returns True or False # image recognition # for understanding imagine face.png as a submit button image in a form filling website # its like magic, but really dumb one. time.sleep(5) # 5 secs to get to the required window and look for that exact img on the screen print(list(pyautogui.locateAllOnScreen('face.png'))) # where face.png is a small part of atual screen where you want to look for this image *** returns X(left),Y(top), width, height print(pyautogui.locateOnScreen('submit.png')) # input img must match exact(or rather take the part out by cropping the screenshot), #print(pyautogui.center(( co_ordinate part of_ return_value of locateOnScreen FUNCTION ))) # this wil return exact center co-ordinates of mathced image and we can use it to click on #pyautogui.click((678, 759))r # Keyboard GUI pyautogui.click(100, 100) # fro this keep a text box or txt file open ready at position pyautogui.typewrite('Hello world! of j k Rawoling') # it clicks to get window ready an then types ##justin never got old press alt+3 to double comment current line
def lvalue(image, directory): leftValue = {} for i in do.locateAllOnScreen(directory + str(image) + '.png'): leftValue.update([(i[0], image)]) return leftValue
import pyautogui # Take screenshot # pyautogui.screenshot('/home/daniel/Pictures/screenshop-example.png') print(pyautogui.locateAllOnScreen('/home/daniel/Pictures/vs.png'))
number_of_friends = int(input("Enter number of friends: ")) fr_h = number_of_friends * 105 # length of friends list in pixels scr_h = pg.size()[1] - 165 # length of visible friends screen scrollheight = scr_h - 210 rolls = int(fr_h // scrollheight) for z in range(2, 0, -1): # time to get ready print(f"Start in {z}") time.sleep(1) print('START') counter = 0 try: for roll in range(rolls): # print('scroll', roll) dogs = pg.locateAllOnScreen('dog.png') for dog in dogs: if dog[1] < pg.size()[1] - 110: pg.moveTo(dog, duration=0.2) delete_friend() counter += 1 print('Del:', counter) pg.moveTo(dog, duration=0.2) pg.vscroll(-scrollheight) if dogs: time.sleep(0.3) except KeyboardInterrupt: print('Stopped by user') print(f"Unfriended {counter} DELETED friends" if counter else "No DELETED friends found")
def reportAPlayer(posX, posY): pyautogui.moveTo(posX, posY) for im in Images.reportButtonIm: reportButton = pyautogui.locateCenterOnScreen(im, region=(posX, posY - 20, 300, 100), confidence=0.8, grayscale=True) if reportButton: break if reportButton: #pyautogui.moveTo(reportButton) pyautogui.mouseDown(reportButton, button='left', duration=1.0) pyautogui.mouseUp(reportButton, button='left') #locate report check boxes checkboxes = list( pyautogui.locateAllOnScreen(Images.checkboxIm, region=WindowProperty.rect, confidence=0.7)) if checkboxes: # get random numbers rn = myRandom() # click check boxes for i in rn: pyautogui.click(checkboxes[i]) # paste report text to comment text field commentTextField = pyautogui.locateCenterOnScreen( Images.commentTextIm, region=WindowProperty.rect) if commentTextField: pyautogui.click(commentTextField) pyperclip.copy(Images.reportText) pyautogui.hotkey('ctrl', 'v') # cancel report for testing #cancel = pyautogui.locateCenterOnScreen(Images.cancelIm, region=WindowProperty.rect) #if cancel: # pyautogui.click(cancel) # return # press report confirm button reportConfirm = pyautogui.locateCenterOnScreen( Images.reportConfirmIm, region=WindowProperty.rect) if reportConfirm: pyautogui.moveTo(reportConfirm) pyautogui.click(reportConfirm) else: DLOG('[reportAPlater] checkbox is not detected') # cancel report and go on. cancel = pyautogui.locateCenterOnScreen(Images.cancelIm, region=WindowProperty.rect) if cancel: pyautogui.click(cancel) return else: DLOG('[reportAPlayer]report fail')
import time screenWidth, screenHeight = pyautogui.size() # Get the size of the primary monitor. centerX = screenWidth / 2 centerY = screenHeight / 2 pyautogui.moveTo(centerX, centerY) pyautogui.click() time.sleep(1) pyautogui.keyDown('alt') magic_jewel_hits = pyautogui.locateAllOnScreen("words/blue_jewel.png", confidence=0.9) for magic_jewel in magic_jewel_hits: pyautogui.moveTo(magic_jewel) time.sleep(0.2) pyautogui.click() time.sleep(1.5) rare_jewel_hits = pyautogui.locateAllOnScreen("words/yellow_jewel.png", confidence=0.9) for rare_jewel in rare_jewel_hits: pyautogui.moveTo(rare_jewel) time.sleep(0.2) pyautogui.click() time.sleep(1.5)
def getposition(image): PosGenerator = pag.locateAllOnScreen(image) NewGenerator = (pag.center(PosTup) for PosTup in PosGenerator) return NewGenerator
def recognize_all(self): if self.region is not None: return ui.locateAllOnScreen(self.image, region=self.region) return ui.locateAllOnScreen(self.image, )
import pyautogui as pag import time if __name__ == '__main__' : #크롬 이미지 인식하자 # data = pag.locateOnScreen("크롬아이콘.PNG") # print(data) # #가운데 좌표 찾자 # # center = (data.left+(data.width/2), data.top+(data.height/2)) # center = pag.center(data) # #마우스 이동하자 # pag.moveTo(center,duration=2) # #더블클릭하자 # pag.doubleClick() datas = pag.locateAllOnScreen("크롬아이콘.PNG") for data in datas: print(data) center = pag.center(data) pag.moveTo(center, duration=1)
# pyautogui.click() # # Demo - detect a set item on the ground, pick it up if there is one # import pyautogui import time screenWidth, screenHeight = pyautogui.size( ) # Get the size of the primary monitor. centerX = screenWidth / 2 centerY = screenHeight / 2 pyautogui.moveTo(centerX, centerY) pyautogui.click() time.sleep(1) pyautogui.keyDown('alt') charm_hits = pyautogui.locateAllOnScreen("words/charm.png", confidence=0.9) for charm in charm_hits: pyautogui.moveTo(charm) time.sleep(0.2) pyautogui.click() time.sleep(1.5) pyautogui.keyUp('alt')
# navigate through start screen pyautogui.click(320 + winLeft, 200 + winTop) # click on Play button pyautogui.click(300 + winLeft, 380 + winTop) # click on Continue button pyautogui.click(550 + winLeft, 450 + winTop) # click on Skip pyautogui.click(300 + winLeft, 380 + winTop) # click on Continue button pyautogui.click(botWindow) # click back on bot window # The main program loop will constantly ask the user for a command until # they enter "quit". while True: # get the user's command command = input('> ') if command == 'quit': sys.exit() # exit program elif command == '': # read screen for all orders and display them print('CURRENT ORDERS: (press Enter to re-scan)') for foodImage in ['onigiri_order.png', 'california_roll_order.png', 'gunkan_maki_order.png', 'salmon_roll_order.png', 'shrimp_sushi_order.png', 'unagi_roll_order.png', 'dragon_roll_order.png', 'combo_order.png']: numOrders = len(list(pyautogui.locateAllOnScreen(foodImage, region=[20 + winLeft, 40 + winTop, 580, 60]))) if numOrders > 0: # only display amount of orders if there are any print(foodImage[:3], numOrders) print('==================')
def find(path: str): loc = pyautogui.locateAllOnScreen(path, confidence=0.95) return loc
def get_pos_all_close_button(self, cur_button="close_button_window.png"): logging.info(os.path.join(os.getcwd(), self.ltm_dir, cur_button)) return pyautogui.locateAllOnScreen( os.path.join(os.getcwd(), self.ltm_dir, cur_button))
def __init__(self): self.regions = list( pyautogui.locateAllOnScreen('open_screen.png', grayscale=True, confidence=0.94))
if command == 'quit': sys.exit() # exit program elif command == '': # read screen for all orders and display them print('CURRENT ORDERS: (press Enter to re-scan)') for foodImage in [ 'onigiri_order.png', 'california_roll_order.png', 'gunkan_maki_order.png', 'salmon_roll_order.png', 'shrimp_sushi_order.png', 'unagi_roll_order.png', 'dragon_roll_order.png', 'combo_order.png' ]: numOrders = len( list( pyautogui.locateAllOnScreen( foodImage, region=[20 + winLeft, 40 + winTop, 580, 60]))) if numOrders > 0: # only display amount of orders if there are any print(foodImage[:3], numOrders) print('==================') clearPlates() continue # go back to start of loop elif not command.isdigit(): # command is to create an order if command == 'oni': print('Making onigiri...') clickIngredients([rice, rice, nori]) elif command == 'cal': print('Making california roll...')
def grid_size(): x_gridlines = list(pyautogui.locateAllOnScreen('x_gridline.png', region=gameboard)) y_gridlines = list(pyautogui.locateAllOnScreen('y_gridline.png', region=gameboard)) return (len(x_gridlines), len(y_gridlines))
import pyautogui import time pyautogui.PAUSE = 0.1 time.sleep(1) print("Finding Twitter Bookmark") x, y, j, k = pyautogui.locateOnScreen('images/twitter.png') print(pyautogui.locateOnScreen('images/twitter.png')) print("\nFinding all folder bookmark icons") print(list(pyautogui.locateAllOnScreen('images/folder.png'))) print("\nGoing to Twitter") time.sleep(0.5) pyautogui.moveTo((x, y)) pyautogui.click()
def play(): #het detecteren van tegels en welke er aan moeten worden geklikt global eerste_keer, grenzen_veld if eerste_keer: #de eerste beurt wordt vastgesteld waar op het scherm het speelveld zich bevindt, zodat het programma steeds daar zoekt in plaats van het hele scherm af te moeten gaan veld = list(pyautogui.locateAllOnScreen('tegel.png')) grenzen_veld = [ veld[0][0], veld[0][1], veld[-1][0] - veld[0][0] + 30, veld[-1][1] - veld[0][1] + 30 ] print(grenzen_veld) eerste_keer = False clickRandom( ) #de eerste keer is er nog niks bekend en moet je sowieso willekeurig iets aanklikken #de onderstaande regels code detecteren eerst bijvoorbeeld alle enen, tweeën... enzovoorts en passen daarna daarop de regels toe om te kijken of er tegels al bommen of geen bommen kunnen worden vastgesteld #als er van dat bepaalde getal geen blijken te zijn, worden de regels daarvan niet uitgevoerd, maar gaat het programma tegels aanklikken volgens de regels #dit gaat ervan uit dat in de meeste gevallen bij een bepaald getal de getallen daaronder ook allemaal aanwezig zijn in het veld #dit zal niet altijd opgaan, maar op deze manier werkt het programma een stuk sneller, want het bespaart een hoop nutteloos zoeken naar getallen die er niet zijn enen = list( pyautogui.locateAllOnScreen('1.png', region=(grenzen_veld[0], grenzen_veld[1], grenzen_veld[2], grenzen_veld[3]))) if not enen: clickRandom() regels(1, enen) tweeën = list( pyautogui.locateAllOnScreen('2.png', region=(grenzen_veld[0], grenzen_veld[1], grenzen_veld[2], grenzen_veld[3]))) if not tweeën: whatToClick() regels(2, tweeën) drieën = list( pyautogui.locateAllOnScreen('3.png', region=(grenzen_veld[0], grenzen_veld[1], grenzen_veld[2], grenzen_veld[3]))) if not drieën: whatToClick() regels(3, drieën) vieren = list( pyautogui.locateAllOnScreen('4.png', region=(grenzen_veld[0], grenzen_veld[1], grenzen_veld[2], grenzen_veld[3]))) if not vieren: whatToClick() regels(4, vieren) vijven = list( pyautogui.locateAllOnScreen('5.png', region=(grenzen_veld[0], grenzen_veld[1], grenzen_veld[2], grenzen_veld[3]))) if not vijven: whatToClick() regels(5, vijven) zessen = list( pyautogui.locateAllOnScreen('6.png', region=(grenzen_veld[0], grenzen_veld[1], grenzen_veld[2], grenzen_veld[3]))) if not zessen: whatToClick() regels(6, zessen) zevens = list( pyautogui.locateAllOnScreen('7.png', region=(grenzen_veld[0], grenzen_veld[1], grenzen_veld[2], grenzen_veld[3]))) if not zevens: whatToClick() regels(7, zevens) achten = list( pyautogui.locateAllOnScreen('8.png', region=(grenzen_veld[0], grenzen_veld[1], grenzen_veld[2], grenzen_veld[3]))) if not achten: whatToClick() regels(8, achten) whatToClick()
if i == 3 or i == 6: print("---------------------") for j in range(len(sudoku[i])): if j == 3 or j == 6: line += "| " line += str(sudoku[i][j])+" " print(line) def fillsudoku(nr, pos): global sudoku indexlocx = int((pos[0] - topleftx + boxwidth/2)//boxwidth) indexlocy = int((pos[1] - toplefty + boxheight/2)//boxwidth) sudoku[indexlocy][indexlocx] = nr def fillcell(nr, x, y): xcoord = topleftx + boxwidth * x ycoord = toplefty + boxheight * y pag.click(xcoord, ycoord) pag.press(str(nr)) for i in range(1, 10): for pos in pag.locateAllOnScreen(str(i)+'1.png'): fillsudoku(i, pos) sudokucopy = copy.deepcopy(sudoku) solveSudoku(sudoku) printsudoku()
"""gui_screen.py 화면 관련 작업 진행하기 """ import pyautogui # 스크린샷 찍기 (이미지 객체 불러오기) im = pyautogui.screenshot() # 픽셀 RGB 값 가져오기 print(pyautogui.pixel(0, 0)) try: # 이미지 인식 loc = pyautogui.locateOnScreen("help_icon.png") # 좌표 얻기, 없으면 Error print(f"loc: {loc}, left: {loc.left}") # 이미지 인식 - 리스트 반환 (2개 이상 매칭이 필요할 때) locs = pyautogui.locateAllOnScreen("help_icon.png") print(list(locs)) except Exception: print("Image coult not found.")
spaceCount = 0 #If the cursor is near a scroll bar, then scroll, up or down #scrollUpLoc = [] # scrollUpLoc.append(pyautogui.locateAllOnScreen('scrollUpWindows.png', grayscale=True)) # scrollUpLoc.append(pyautogui.locateAllOnScreen('scrollUpWindowsHighlighted.png', grayscale=True)) #print('scrollUpLoc' + str(scrollUpLoc[0])) # print (list(pyautogui.locateAllOnScreen('scrollUpWindowsHighlighted.png', grayscale=True))) # print (list(pyautogui.locateAllOnScreen('scrollUpWindows.png', grayscale=True))) # scrollDownLoc = [] # scrollDownLoc.append(pyautogui.locateAllOnScreen('scrollDownWindows.png', grayscale=True)) # scrollDownLoc.append(pyautogui.locateAllOnScreen('scrollDownWindowsHighlighted.png', grayscale=True)) #print('scrollDownLoc' + str(scrollDownLoc[0])) # list(scrollUpLoc) x, y = pyautogui.position() print (x, y) for k in (pyautogui.locateAllOnScreen(scrollUpFile, grayscale=True)): if (x > (k[0] - 5) and x < (k[0] + k[2] + 5) and y > (k[1] - 5) and y < (k[1] + k[3] + 5)): pyautogui.scroll(scrollDist) print("Scrolled up") for l in (pyautogui.locateAllOnScreen(scrollDownFile, grayscale=True)): if (x > (l[0] - 5) and x < (l[0] + l[2] + 5) and y > (l[1] - 5) and y < (l[1] + l[3] + 5)): pyautogui.scroll(-scrollDist) print("Scrolled down") i += 1
def detect_runescape_windows(): return [ window for window in pyautogui.locateAllOnScreen(gui.main_ge_window) ]
time.sleep(2) pag.press('enter') pag.hotkey('command', 't') time.sleep(1) pag.typewrite('images.google.com') pag.press('enter') pag.typewrite('apple') pag.press('enter') time.sleep(1)2 list(pag.locateAllOnScreen('lookslikethis.jpg')) # prints mouse position constantly try: while True: x, y = pyautogui.position() positionStr = 'X: ' + str(x).rjust(4) + ' Y: ' + str(y).rjust(4) print(positionStr, end='') print('\b' * len(positionStr), end='', flush=True) except KeyboardInterrupt: print('\n')
def update(tiles, board, holder, gameLocX, gameLocY): # smile, blank, one, two, three, four, empty # [scanXStart, scanYStart] = [gameLocX - 90, gameLocY + 20] # scan over the game board # [scanXEnd, scanYEnd] = [scanXStart + 220, scanYStart + 270] scanXStart = board[0][0].left - 5 scanYStart = board[0][0].top - 10 scanXEnd = board[len(board) - 2][len(board[0]) - 1].left + board[ len(board) - 2][len(board[0]) - 1].width + 5 scanYEnd = board[len(board) - 2][len(board[0]) - 1].top + board[ len(board) - 2][len(board[0]) - 1].height + 10 ones = list( pyautogui.locateAllOnScreen(tiles[2], grayscale=False, region=(scanXStart, scanYStart, scanXEnd, scanYEnd))) twos = list( pyautogui.locateAllOnScreen(tiles[3], grayscale=False, region=(scanXStart, scanYStart, scanXEnd, scanYEnd))) threes = list( pyautogui.locateAllOnScreen(tiles[4], grayscale=False, region=(scanXStart, scanYStart, scanXEnd, scanYEnd))) fours = list( pyautogui.locateAllOnScreen(tiles[5], grayscale=False, region=(scanXStart, scanYStart, scanXEnd, scanYEnd))) emptys = list( pyautogui.locateAllOnScreen(tiles[6], grayscale=True, region=(scanXStart, scanYStart, scanXEnd, scanYEnd))) flagged = list( pyautogui.locateAllOnScreen(tiles[7], grayscale=True, region=(scanXStart, scanYStart, scanXEnd, scanYEnd))) bombs = list( pyautogui.locateAllOnScreen(tiles[8], grayscale=True, region=(scanXStart, scanYStart, scanXEnd, scanYEnd))) # Wow It's a Real Mess In Here, isnt it? if len(bombs) > 0: print("OH NO I MESSED UP (˃ω˂)") quit() for i in range(len(emptys)): s = str(emptys[i].left - 1) + str(emptys[i].top - 1) holder[s].type = 'empty' holder[s].likelihood = -1 for i in range(len(flagged)): s = str(flagged[i].left - 1) + str(flagged[i].top - 1) holder[s].type = 'flagged' holder[s].likelihood = 100 for i in range(len(ones)): s = str(ones[i].left - 1) + str(ones[i].top - 1) holder[s].type = 'one' holder[s].likelihood = -1 count = 0 keepaneyeon = [] for j in range(len(holder[s].surroundings[0])): if holder[s].surroundings[0][j] != None and holder[s].surroundings[ 0][j].type == 'blank': count += 1 keepaneyeon.append(holder[s].surroundings[0][j]) if holder[s].surroundings[0][j] != None and holder[s].surroundings[ 0][j].type == 'flagged': count += 1 keepaneyeon.append(holder[s].surroundings[0][j]) if len(keepaneyeon) == 1: for j in range(len(keepaneyeon)): if keepaneyeon[j].flagged != True: keepaneyeon[j].flagged = True pyautogui.rightClick(x=keepaneyeon[j].left + 10, y=keepaneyeon[j].top + 10) for k in range(len(keepaneyeon[j].surroundings[0])): if keepaneyeon[j].surroundings[0][k] is None: continue if keepaneyeon[j].surroundings[0][ k].type == 'blank' or keepaneyeon[ j].surroundings[0][k].type == 'empty': continue elif keepaneyeon[j].surroundings[0][k].type == 'one' or \ keepaneyeon[j].surroundings[0][k].type == 'two' or \ keepaneyeon[j].surroundings[0][k].type == 'three' or \ keepaneyeon[j].surroundings[0][k].type == 'four': pyautogui.click( x=keepaneyeon[j].surroundings[0][k].left + 10, y=keepaneyeon[j].surroundings[0][k].top + 10) for i in range(len(twos)): s = str(twos[i].left - 1) + str(twos[i].top - 1) holder[s].type = 'two' holder[s].likelihood = -1 count = 0 keepaneyeon = [] for j in range(len(holder[s].surroundings[0])): if holder[s].surroundings[0][j] != None and holder[s].surroundings[ 0][j].type == 'blank': count += 1 keepaneyeon.append(holder[s].surroundings[0][j]) if holder[s].surroundings[0][j] != None and holder[s].surroundings[ 0][j].type == 'flagged': count += 1 keepaneyeon.append(holder[s].surroundings[0][j]) if len(keepaneyeon) == 2: for j in range(len(keepaneyeon)): if keepaneyeon[j].flagged != True: keepaneyeon[j].flagged = True pyautogui.rightClick(x=keepaneyeon[j].left + 10, y=keepaneyeon[j].top + 10) for k in range(len(keepaneyeon[j].surroundings[0])): if keepaneyeon[j].surroundings[0][k] is None: continue if keepaneyeon[j].surroundings[0][ k].type == 'blank' or keepaneyeon[ j].surroundings[0][k].type == 'empty': continue elif keepaneyeon[j].surroundings[0][k].type == 'one' or \ keepaneyeon[j].surroundings[0][k].type == 'two' or \ keepaneyeon[j].surroundings[0][k].type == 'three' or \ keepaneyeon[j].surroundings[0][k].type == 'four': pyautogui.click( x=keepaneyeon[j].surroundings[0][k].left + 10, y=keepaneyeon[j].surroundings[0][k].top + 10) for i in range(len(threes)): s = str(threes[i].left - 1) + str(threes[i].top - 1) holder[s].type = 'three' holder[s].likelihood = -1 count = 0 keepaneyeon = [] for j in range(len(holder[s].surroundings[0])): if holder[s].surroundings[0][j] != None and holder[s].surroundings[ 0][j].type == 'blank': count += 1 keepaneyeon.append(holder[s].surroundings[0][j]) if holder[s].surroundings[0][j] != None and holder[s].surroundings[ 0][j].type == 'flagged': count += 1 keepaneyeon.append(holder[s].surroundings[0][j]) if len(keepaneyeon) == 3: for j in range(len(keepaneyeon)): if keepaneyeon[j].flagged != True: keepaneyeon[j].flagged = True pyautogui.rightClick(x=keepaneyeon[j].left + 10, y=keepaneyeon[j].top + 10) for k in range(len(keepaneyeon[j].surroundings[0])): if keepaneyeon[j].surroundings[0][k] is None: continue if keepaneyeon[j].surroundings[0][ k].type == 'blank' or keepaneyeon[ j].surroundings[0][k].type == 'empty': continue elif keepaneyeon[j].surroundings[0][k].type == 'one' or \ keepaneyeon[j].surroundings[0][k].type == 'two' or \ keepaneyeon[j].surroundings[0][k].type == 'three' or \ keepaneyeon[j].surroundings[0][k].type == 'four': pyautogui.click( x=keepaneyeon[j].surroundings[0][k].left + 10, y=keepaneyeon[j].surroundings[0][k].top + 10) for i in range(len(fours)): s = str(fours[i].left - 1) + str(fours[i].top - 1) holder[s].type = 'four' holder[s].likelihood = -1 count = 0 keepaneyeon = [] for j in range(len(holder[s].surroundings[0])): if holder[s].surroundings[0][j] != None and holder[s].surroundings[ 0][j].type == 'blank': count += 1 keepaneyeon.append(holder[s].surroundings[0][j]) if holder[s].surroundings[0][j] != None and holder[s].surroundings[ 0][j].type == 'flagged': count += 1 keepaneyeon.append(holder[s].surroundings[0][j]) if len(keepaneyeon) == 4: for j in range(len(keepaneyeon)): if keepaneyeon[j].flagged != True: keepaneyeon[j].flagged = True pyautogui.rightClick(x=keepaneyeon[j].left + 10, y=keepaneyeon[j].top + 10) for k in range(len(keepaneyeon[j].surroundings[0])): if keepaneyeon[j].surroundings[0][k] is None: continue if keepaneyeon[j].surroundings[0][ k].type == 'blank' or 'empty': continue elif keepaneyeon[j].surroundings[0][ k].type == 'one' or 'two' or 'three' or 'four': pyautogui.click( x=keepaneyeon[j].surroundings[0][k].left + 10, y=keepaneyeon[j].surroundings[0][k].top + 10) # for i in range(len(board)): # for j in range(len(board[i])): # print("{} ".format(board[i][j].type), end="") # print("") return holder
def move_mouse(x1,y1): spaceCount = 0 #counter for single clicks cursorClick = 10 #alters how long the user must look at a point before a click maxMovement = 250 #alters the area the user must look at to invoke a click or double click cursorDoubleClick = 20 #alters how long the user must look at a point before a double click doubleCount = 0 #counter for double clicks scollBox = 50 #how close the gaze point must be to the scroll thumb #Move to the first location and add the location to the list if len(pointsVisited) <=0: pyautogui.moveTo((x1,y1), duration=0) pointsVisited.append(pyautogui.position()) #For the next locations find the previous location, work out the distance between #the previous location and the one to move to and set the time this should take #Move to the current location for the set amount of time, and add the current #location to the list else: prevPos = len(pointsVisited) - 1 point = pointsVisited[prevPos] oldX = point[0] oldY = point[1] #For each set of coordinates in the list, move to the coordinates, at an #appropriate speed. distance = math.sqrt(math.pow(x1-oldX, 2) + math.pow(y1 -oldY,2)) dur = distance/speed pyautogui.moveTo((x1,y1), duration=dur) pointsVisited.append(pyautogui.position()) # print 'len points visited' # print (len(pointsVisited)) #If there have been x number of movements set a bounding box around the 'x'th previous #location. Check each of the locaitons in this range, if all of them are within the #bounding box, invoke a click if len(pointsVisited) > cursorClick: #Set a box, (maxMovement) pixels wide lowBound1 = (pointsVisited[prevPos-cursorClick][0])-maxMovement lowBound2 = (pointsVisited[prevPos-cursorClick][1])-maxMovement highBound1 = (pointsVisited[prevPos-cursorClick][0])+maxMovement highBound2 = (pointsVisited[prevPos-cursorClick][1])+maxMovement #spaceCount = 0 #For all the moves between the (cursorClick)th previous move and the current one, #check if the cursor has stayed within the bounds, if it has for each then add one to #spaceCount, repeat for doubleCount for j in range((prevPos-(cursorClick - 1)), (prevPos+1)): if((lowBound1<= pointsVisited[j][0]) & (pointsVisited[j][0] <= highBound1) & (lowBound2 <= pointsVisited[j][1]) & (pointsVisited[j][1] <= highBound2)): spaceCount += 1 else: spaceCount = 0 if len(pointsVisited) > cursorDoubleClick: for k in range((prevPos-(cursorDoubleClick - 1)), (prevPos+1)): if((lowBound1<= pointsVisited[k][0]) & (pointsVisited[k][0] <= highBound1) & (lowBound2 <= pointsVisited[k][1]) & (pointsVisited[k][1] <= highBound2)): doubleCount += 1 else: doubleCount = 0 #print doubleCount #print spaceCount #Check doubleCount and spaceCount to see if a double click or click should be invoked, #if so also check if there should be a scroll if (doubleCount == cursorDoubleClick): print ('Double Click') pyautogui.click(clicks = 2) doubleCount = 0 spaceCount = 0 if (spaceCount == cursorClick): print('Click Invoked') pyautogui.click() spaceCount = 0 #To ivoke a scroll search for occurances of the scroll thumb on the screen, then #check each of these locations to see if the cursor is there, if so scroll in the #correct direction. for k in (pyautogui.locateAllOnScreen(scrollUpFileHightlighted, grayscale=True)): if (x1 > (k[0] - scollBox) and x1 < (k[0] + k[2] + scollBox) and y1 > (k[1] - scollBox) and y1 < (k[1] + k[3] + scollBox)): pyautogui.scroll(scrollDist) print("Scrolled Up") for l in (pyautogui.locateAllOnScreen(scrollDownFileHighlighted, grayscale=True)): if (x1 > (l[0] - scollBox) and x1 < (l[0] + l[2] + scollBox) and y1 > (l[1] - scollBox) and y1 < (l[1] + l[3] + scollBox)): pyautogui.scroll(-scrollDist) print("Scrolled Down") for m in (pyautogui.locateAllOnScreen(scrollUpFile, grayscale=True)): if (x1 > (m[0] - scollBox) and x1 < (m[0] + m[2] + scollBox) and y1 > (m[1] - scollBox) and y1 < (m[1] + m[3] + scollBox)): pyautogui.scroll(scrollDist) print("Scrolled Up") for n in (pyautogui.locateAllOnScreen(scrollDownFile, grayscale=True)): if (x1 > (n[0] - scollBox) and x1 < (n[0] + n[2] + scollBox) and y1 > (n[1] - scollBox) and y1 < (n[1] + n[3] + scollBox)): pyautogui.scroll(-scrollDist) print("Scrolled Down")