Найти - Пользователи
Полная версия: Запоминание введенных координат
Начало » Python для новичков » Запоминание введенных координат
1
ssalbs
Доброго времени суток, пишу банальную программу ее суть в том что я задаю квадрат на экране и при нажатии на кнопку программа делает скриншот и распознает текст затем выводит текст в лейбл. Задаются координаты при помощи двух кнопок: “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
Не корректно отображается код, а именно где в функциях cor_1 и cor_2 я беру то первое получаемое число то второе, по этому прикрепляю файл.
py.user.next
ssalbs
Подскажите пожалуйста как это исправить, не прошу за меня писать код, хотя бы подсказку в каком направлении смотреть.
Выводи координаты в консоль через print(). Так ты узнаешь, меняются ли они вообще. Дальше тебе нужно будет наладить передачу значений переменных между функциями. Для этого обычно нужно использовать return внутри функции.
ssalbs
Я вывожу в еще один лейбл для проверки и выводит отдельно координаты х и у. Его удалил из кода который выше для того что бы не путать людей у которых прошу совет.
ssalbs
return не помогает т.к. она работает только внутри функции.
ZerG
 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
   
ssalbs
g: 247 y: 299
z: 336 c: 317
в принт показывает координаты, но при нажатии на кнопку чтоб распознать текст пишет:

screen = np.array(ImageGrab.grab(bboxg, y, z, c)))
NameError: name ‘g’ is not defined
ssalbs
Нашлось решение.
def cor_1():
global g, y
time.sleep(2)
x1 = (pyautogui.position())
g = (x1)
y1 = (pyautogui.position())
y = (y1)
return g, y
ZerG
Приучай себя работать правильно - вначале создаешь структуру данны
 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)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB