Запись координат мыши в функцию

Piwpaf

Новичок
Пользователь
Апр 28, 2020
7
0
1
Windows 10
Python 3.7
--------------------
Доброго времени суток. Есть один компутер и 2 аккаунта в Battle.net, что бы не вводить данные каждый раз я решил сделать небольшой скрипт автовхода.
Суть в том, что я не могу сделать окно активным пока на него не кликну, что бы каждый раз не делать это самостоятельно, решил кликать по координатам, но т.к этот скрипт будет использоваться на двух устройствах с разным разрешением экрана, то потребуется для каждого устройства изменять код, а это совсем не подходящий вариант. Реализовал получение координат по нажатию клавиши далее("получение коорд") и встал в тупик.
Проблема:
Как после нажатия клавиши сделать так, что бы полученные координаты вставились в "pyautogui.click(Сюда, Туда)" и при запуске скрипта координаты возвращались не изменяясь до повторного нажатия на клавишу "получение коорд".
Буду рад любой помощи :)
--------------------
Код:
Python:
from time import sleep
import pywinauto
import pyautogui
from tkinter import *
import keyboard
from tkinter import messagebox
root = Tk()
root.title("Autorun Battle.net")
root.geometry("270x160")
root.resizable(False, False)  # Запрет на изменение размера окна


class Script():

    def yana(self):
        app = pywinauto.Application()
        app.start("E:\Program Files (x86)\Battle.net\Battle.net Launcher.exe")
        sleep(6)
        pyautogui.click(651, 462)
        pyautogui.hotkey('ctrl', 'a')
        pyautogui.press('Backspace')
        pyautogui.typewrite('bebebe@gmail.com')
        pyautogui.press('Tab')
        pyautogui.typewrite('bebebe@gmail.com')
        pyautogui.press('Enter')

    def dima(self):
        app = pywinauto.Application()
        app.start("E:\Program Files (x86)\Battle.net\Battle.net Launcher.exe")
        sleep(6)
        pyautogui.click(651, 462)
        pyautogui.hotkey('ctrl', 'a')
        pyautogui.press('Backspace')
        pyautogui.typewrite('bebebe@gmail.com')
        pyautogui.press('Tab')
        pyautogui.typewrite('bebebe@gmail.com')
        pyautogui.press('Enter')

    def mouseposition(self):
        keyboard.wait('Ctrl')
        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)
        messagebox.showinfo("coord", positionStr)

    btnY = Button(root,
                  text="Yana",
                  width=14, height=5)
    btnY.bind("<Button-1>", yana)

    btnD = Button(root,
                  text="Dima",
                  width=13, height=5)
    btnD.bind("<Button-1>", dima)

    btnMouse = Button(root,
                  text="coord",
                  width=13, height=5)
    btnMouse.bind("<Button-1>", mouseposition)

    btnY.pack(side="left")
    btnD.pack(side="right")
    btnMouse.pack(side="top")


    root.mainloop()

aiohttp 3.6.2
altgraph 0.17
async-timeout 3.0.1
attrs 19.3.0
certifi 2020.4.5.1
chardet 3.0.4
comtypes 1.1.7
decorator 4.4.2
future 0.18.2
idna 2.9
keyboard 0.13.5
MouseInfo 0.1.3
multidict 4.7.5
nord 0.2.0
pefile 2019.4.18
Pillow 7.1.2
pip 20.1
PyAutoGUI 0.9.50
PyGetWindow 0.0.8
PyInstaller 3.6
PyMouse 1.0
PyMsgBox 1.0.7
pynput 1.6.8
PyOpenGL 3.1.5
pyperclip 1.8.0
PyRect 0.1.4
PyScreeze 0.1.26
pyTelegramBotAPI 3.7.1
PyTweening 1.0.3
pywin32 227
pywin32-ctypes 0.2.0
pywinauto 0.6.8
requests 2.23.0
selenium 3.141.0
setuptools 40.8.0
six 1.14.0
structlog 20.1.0
termcolor 1.1.0
urllib3 1.25.9
yarl 1.4.2
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Как я понял из вопроса вам нужно где-то хранить значения координат до следующего вызова скрипта. Можете записать их в файл и при старте скрипта считывать или использовать pickle например.
 
  • Мне нравится
Реакции: Piwpaf

Piwpaf

Новичок
Пользователь
Апр 28, 2020
7
0
1
Как я понял из вопроса вам нужно где-то хранить значения координат до следующего вызова скрипта. Можете записать их в файл и при старте скрипта считывать или использовать pickle например.
Первую часть проблемы решил, теперь не понимаю как подставить загруженные координаты в pyautogui.click()

Python:
        keyboard.wait('Ctrl')
        x, y = pyautogui.position()
        positionStr = str(x) + ", " + str(y)
        print(positionStr, end='')
        print('\b' * len(positionStr), end='', flush=True)
        messagebox.showinfo("You coord", positionStr)
        f = open(r"coord.txt", "wb")
        pickle.dump(positionStr, f)
        f.close()
        print(pickle.load(open(r"coord.txt", "rb")))
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Первую часть проблемы решил, теперь не понимаю как подставить загруженные координаты в pyautogui.click()
Можно в классе, сделать конструктор, в нем загружать координаты из файла в self.x и self.y, а потом вместо pyautogui.click(651, 462) вызывать pyautogui.click(self.x, self.y)
 

Форум IT Специалистов