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

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

17.05.2020, 15:34. Показов 4612. Ответов 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,301
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,301
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,301
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,301
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,301
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
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru