Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 7, 2023 21:10:24

ssalbs
Зарегистрирован: 2023-08-07
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Запоминание введенных координат

Доброго времени суток, пишу банальную программу ее суть в том что я задаю квадрат на экране и при нажатии на кнопку программа делает скриншот и распознает текст затем выводит текст в лейбл. Задаются координаты при помощи двух кнопок: “1” и “2”, 1-задает верхний левый угол, 2я-правый нижний угол. Но столкнулся с проблемой что координаты не сохраняются. Подскажите пожалуйста как это исправить, не прошу за меня писать код, хотя бы подсказку в каком направлении смотреть. Код ниже:



from tkinter import *
import time
import numpy as np
import pyscreenshot as ImageGrab
import cv2
import pytesseract
import pyautogui
filename = ‘Image.png’

window = Tk()
window.title('штука')
window.geometry('250x125+900+100')
window.config(bg=“gray”)
window.resizable(width = False, height = False)


def cor_1():
time.sleep(2)
x1 = (pyautogui.position())
g = (x1)
y1 = (pyautogui.position())
y = (y1)



def cor_2():
time.sleep(2)
z1 = (pyautogui.position())
z = (z1)
c1 = (pyautogui.position())
c = (c1)



def chit_cof1():
x = 1
screen = np.array(ImageGrab.grab(bboxg, y, z, c)))
cv2.imwrite(filename, screen)
x = x + 1
img = cv2.imread('Image.png')
text = pytesseract.image_to_string(img)
label1 = text


label1 = Label(window, width=8, height=2)
label1.place(x=40, y=2)


btn1 = Button(window, bg='blue', fg='white', text='1', command=cor_1)
btn1.place(x=5, y=1)

btn2 = Button(window, bg='blue', fg='white', text='2', command=cor_2)
btn2.place(x=22, y=1)


btn5 = Button(window, bg='green', fg='white', text='ST', command=chit_cof1)
btn5.place(x=110, y=40)

window.mainloop()

Отредактировано ssalbs (Авг. 7, 2023 21:23:04)

Офлайн

#2 Авг. 7, 2023 21:26:32

ssalbs
Зарегистрирован: 2023-08-07
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Запоминание введенных координат

Не корректно отображается код, а именно где в функциях cor_1 и cor_2 я беру то первое получаемое число то второе, по этому прикрепляю файл.

Прикреплённый файлы:
attachment штука.txt (1,2 KБ)

Офлайн

#3 Авг. 8, 2023 03:38:03

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9862
Репутация: +  853  -
Профиль   Отправить e-mail  

Запоминание введенных координат

ssalbs
Подскажите пожалуйста как это исправить, не прошу за меня писать код, хотя бы подсказку в каком направлении смотреть.
Выводи координаты в консоль через print(). Так ты узнаешь, меняются ли они вообще. Дальше тебе нужно будет наладить передачу значений переменных между функциями. Для этого обычно нужно использовать return внутри функции.



Онлайн

#4 Авг. 8, 2023 14:42:56

ssalbs
Зарегистрирован: 2023-08-07
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Запоминание введенных координат

Я вывожу в еще один лейбл для проверки и выводит отдельно координаты х и у. Его удалил из кода который выше для того что бы не путать людей у которых прошу совет.

Офлайн

#5 Авг. 8, 2023 15:21:28

ssalbs
Зарегистрирован: 2023-08-07
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Запоминание введенных координат

return не помогает т.к. она работает только внутри функции.

Офлайн

#6 Авг. 8, 2023 16:52:54

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

Запоминание введенных координат

 def cor_1():
    time.sleep(2)
    x1 = (pyautogui.position())
   g = (x1)
   y1 = (pyautogui.position())
   y = (y1)

твоя функция ничего не возвращает
 def cor_1():
    time.sleep(2)
    x1 = (pyautogui.position())
   
   y1 = (pyautogui.position())
   # Check it
   print(f"X1: {x1}  Y1: {y1}")
   return x1,y1
   



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#7 Авг. 8, 2023 19:18:31

ssalbs
Зарегистрирован: 2023-08-07
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Запоминание введенных координат

g: 247 y: 299
z: 336 c: 317
в принт показывает координаты, но при нажатии на кнопку чтоб распознать текст пишет:

screen = np.array(ImageGrab.grab(bboxg, y, z, c)))
NameError: name ‘g’ is not defined

Офлайн

#8 Авг. 8, 2023 19:44:04

ssalbs
Зарегистрирован: 2023-08-07
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Запоминание введенных координат

Нашлось решение.
def cor_1():
global g, y
time.sleep(2)
x1 = (pyautogui.position())
g = (x1)
y1 = (pyautogui.position())
y = (y1)
return g, y

Офлайн

#9 Авг. 8, 2023 19:50:27

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

Запоминание введенных координат

Приучай себя работать правильно - вначале создаешь структуру данны

 from dataclasses import dataclass
@dataclass
class Coords:
    g: int = 0
    y: int = 0
    z: int = 0
    c: int = 0
crds = Coords()
Потом работаешь заполняя данные
 crds.g = 10
crds.y = 11
crds.z = 12
crds.c = 13

Обращаешься к ним
 print(crds.g)
print(crds)



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Отредактировано ZerG (Авг. 8, 2023 19:51:04)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version