Форум программистов, компьютерный форум, киберфорум
Python: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/21: Рейтинг темы: голосов - 21, средняя оценка - 4.95
2 / 2 / 0
Регистрация: 05.05.2020
Сообщений: 15

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

17.05.2020, 15:34. Показов 4684. Ответов 10

Студворк — интернет-сервис помощи студентам
Windows 10
Python 3.7
--------------------
Доброго времени суток. Есть один компутер и 2 аккаунта в Battle.net, что бы не вводить данные каждый раз я решил сделать небольшой скрипт автовхода.
Суть в том, что я не могу сделать окно активным пока на него не кликну, что бы каждый раз не делать это самостоятельно, решил кликать по координатам, но т.к этот скрипт будет использоваться на двух устройствах с разным разрешением экрана, то потребуется для каждого устройства изменять код, а это совсем не подходящий вариант. Реализовал получение координат по нажатию клавиши далее("получение коорд") и встал в тупик.
Проблема:
Как после нажатия клавиши сделать так, что бы полученные координаты вставились в "pyautogui.click(Сюда, Туда)" и при запуске скрипта координаты возвращались не изменяясь до повторного нажатия на клавишу "получение коорд".
Буду рад любой помощи
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
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()


pip list


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


Добавлено через 1 час 54 минуты
Первую часть проблемы решил с помощью piсkle, теперь не понимаю как подставить загруженные координаты в pyautogui.click()



Python
1
2
3
4
5
6
7
8
9
10
        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")))
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.05.2020, 15:34
Ответы с готовыми решениями:

Запись координат мыши
Добрый день у меня есть задачка на ткинтере сделал две кнопки мне нужно чтобы при нажатии первой кнопки программа начала записывать все...

Запись в файл координат мыши
Здравствуйте уважаемые любители C#. Сделал WinForm прогу, которая работает с изображением(карта города). Программа рисует линии,...

Запись координат при нажатиях кнопки мыши
Есть программа, которая при нажатии кнопки мыши записывает её координаты. Что нужно добавить, чтобы записывались значения при втором и...

10
1293 / 677 / 367
Регистрация: 07.01.2019
Сообщений: 2,302
17.05.2020, 16:07
Цитата Сообщение от Piwpaf Посмотреть сообщение
как подставить загруженные координаты в pyautogui.click()
А если сперва pyautogui.move?
0
2 / 2 / 0
Регистрация: 05.05.2020
Сообщений: 15
17.05.2020, 16:47  [ТС]
А если сперва pyautogui.move?
Можно и .move. Проблема в том, что я не знаю как передать координаты сохраненные с помощью pickle в pyautogui.move(сюды)
0
1293 / 677 / 367
Регистрация: 07.01.2019
Сообщений: 2,302
17.05.2020, 16:57
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import keyboard
import pyautogui
import pickle
from tkinter import messagebox
 
 
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()
 
dat = pickle.load(open(r"coord.txt", "rb"))
x, y = list(map(int, dat.split(',')))
print(x, y)
0
2 / 2 / 0
Регистрация: 05.05.2020
Сообщений: 15
17.05.2020, 17:49  [ТС]
Цитата Сообщение от tooru Посмотреть сообщение
import keyboard
import pyautogui
import pickle
from tkinter import messagebox
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()
dat = pickle.load(open(r"coord.txt", "rb"))
x, y = list(map(int, dat.split(',')))
print(x, y)
Могу показаться глупым, но я не понимаю для чего предпоследняя строка, вывести координаты у меня и так получается)

Полученные координаты с помощью метода
Цитата Сообщение от Piwpaf Посмотреть сообщение
def mouseposition(self):
должны автоматически подставляться ↓↓↓
Цитата Сообщение от Piwpaf Посмотреть сообщение
pyautogui.click(651, 462)
Вместо (651, 462)будут координаты которые мы получили.
Благодарю вас за ваше терпение.
0
1293 / 677 / 367
Регистрация: 07.01.2019
Сообщений: 2,302
17.05.2020, 18:07
Не могу уловить, что вызывает у вас затруднения
0
2 / 2 / 0
Регистрация: 05.05.2020
Сообщений: 15
17.05.2020, 18:40  [ТС]
Цитата Сообщение от tooru Посмотреть сообщение
Не могу уловить, что вызывает у вас затруднения

Проблема в том, что я не знаю как это реализовать в коде
0
1293 / 677 / 367
Регистрация: 07.01.2019
Сообщений: 2,302
17.05.2020, 19:18
Вместо x и y можно сделать self.x и self.y, тогда эти переменные можно использовать везде к классе
и после

Python
1
print(messagebox.showinfo("You coord", positionStr))
написать

Python
1
self.dima()
1
2 / 2 / 0
Регистрация: 05.05.2020
Сообщений: 15
17.05.2020, 21:01  [ТС]
Цитата Сообщение от tooru Посмотреть сообщение
Вместо x и y можно сделать self.x и self.y, тогда эти переменные можно использовать везде к классе
и после
Не работает, возможно я вас не правильно понял

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
    def mouseposition(self):
        keyboard.wait('Ctrl')
        self.x, self.y = pyautogui.position()
        positionStr = str(self.x) + ", " + str(self.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")))
 
    def dima(self):
        #app = pywinauto.Application()
        #app.start("C:\Program Files (x86)\Battle.net\Battle.net Launcher.exe")
        sleep(6)
        pyautogui.click(self.x, self.y)
        pyautogui.hotkey('ctrl', 'a')
        pyautogui.press('Backspace')
        pyautogui.typewrite('blabla@gmail.com')
        pyautogui.press('Tab')
        pyautogui.typewrite('blabla@gmail.com')
        pyautogui.press('Enter')
0
1293 / 677 / 367
Регистрация: 07.01.2019
Сообщений: 2,302
17.05.2020, 21:03
Так метод self.dima() нужно вызвать
1
2 / 2 / 0
Регистрация: 05.05.2020
Сообщений: 15
17.05.2020, 21:35  [ТС]
Цитата Сообщение от tooru Посмотреть сообщение
Так метод self.dima() нужно вызвать
Если я вызываю по отдельности т.е

Python
1
2
3
start = Script()
start.mouseposition()
start.dima()
То все работает.

Если же я вызываю с помощью tkinter, то мышка каждый раз кликает в один и тот же угол

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
    def mouseposition(self):
        keyboard.wait('Ctrl')
        self.x, self.y = pyautogui.position()
        positionStr = str(self.x) + ", " + str(self.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")))    
    
    def dima(self):
        #app = pywinauto.Application()
        #app.start("C:\Program Files (x86)\Battle.net\Battle.net Launcher.exe")
        sleep(6)
        pyautogui.click(self.x, self.y)
        pyautogui.hotkey('ctrl', 'a')
        pyautogui.press('Backspace')
        pyautogui.typewrite('')
        pyautogui.press('Tab')
        pyautogui.typewrite('')
        pyautogui.press('Enter')
 
    btnD = Button(root,
                  text="Dima",
                  width=13, height=5)
    btnD.bind("<Button-1>", dima)
 
    btnMouse = Button(root,
                  text="Get coord",
                  width=13, height=5)
    btnMouse.bind("<Button-1>", mouseposition)
 
    btnD.pack(side="right")
    btnMouse.pack(side="top")
 
 
    root.mainloop()
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.05.2020, 21:35
Помогаю со студенческими работами здесь

Запись координат для клика и ожидание нажатия клавиши мыши
Здравия желаю. Я писал программу - кликер в которой мне нужно выполнить такую задачу: 1)Записать координаты, по которым кликнул...

Запись щелчков мыши в очередь и отображение этих координат с присвоением порядкового номера
Доброго дня всем. Я, конечно, понимаю, что мало кто любит разбираться в чужом коде, но может кто поможет) Суть программы заключается...

Получение координат элемента или координат мыши на элементе
Добрый день. Имеется форма wpf На ней имеется grid в гриде установлен фон картинкой. грид с картинкой изменяются размерами но всегда...

При опросе координат курсора и состояния кнопок мыши (int 33h ax=0003h), значение координат не изменяется
Не пойму в чём проблема. Графический режим, прога ждёт нажатия левой кнопки, после этого в регистры CX и DX автоматически помещается...

Описать функцию ReCtPS(X1,y1, x2,y2, P, S), вычисляющую периметр P и площадь S прямоугольника со сторонами, параллельными осям координат, по координат
Описать функцию ReCtPS(X1,y1, x2,y2, P, S), вычисляющую периметр P и площадь S прямоугольника со сторонами, параллельными осям координат,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru