import tkinter as tk
from tkinter import ttk
import mouse
import keyboard
import time
import pyautogui
from PIL import Image, ImageChops
import pytesseract
import cv2
def JB():
w = False
IsAlive = True
template1 = pyautogui.locateOnScreen('offline.png')
template2 = pyautogui.locateOnScreen('online.png')
def difference_images():
global w
global template1
global template2
pytesseract.pytesseract.tesseract_cmd = r"C:\Program Files\Tesseract-OCR\tesseract.exe"
img1 = cv2.imread('offline.png')
img1 = cv2.cvtColor(img1, cv2.COLOR_BGR2RGB)
img2 = cv2.imread('online.png')
img2 = cv2.cvtColor(img2, cv2.COLOR_BGR2RGB)
img3 = cv2.imread('screenshot.png')
img3 = cv2.cvtColor(img3, cv2.COLOR_BGR2RGB)
config = r'--oem 3 --psm 6'
f = pytesseract.image_to_string(img1, config=config)
config = r'--oem 3 --psm 6'
b = pytesseract.image_to_string(img2, config=config)
config = r'--oem 3 --psm 6'
c = pytesseract.image_to_string(img3, config=config)
screen1 = pyautogui.screenshot('screenshot.png',region=(template1))
screen2 = pyautogui.screenshot('screenshot.png',region=(template2))
if f == c:
mouse.click(button='left')
time.sleep(0.01)
elif f != c:
w = False
elif b == c:
w = False
elif b != c:
mouse.click(button='left')
time.sleep(0.01)
def sc():
global w
if w:
w = True
else:
w = False
# Создание скриншота
if button.cget("text") == "Старт":
button.config(text="Стоп")
# Здесь выполняется ваша функция
else:
button.config(text="Старт")
# Остановка выполнения функции
# Основной цикл программы
while IsAlive:
#Terminate()
# Сравнение изображений
difference_images()
root = tk.Tk()
root.title("Job Bot") # устанавливаем заголовок окна
root.geometry("300x250") # устанавливаем размеры окна
label = tk.Label(text="Чтобы начать нажмите старт") # создаем текстовую метку
label.pack() # размещаем метку в окне
button = tk.Button(root, text="Старт", command=JB)
button.pack()
root.mainloop()
можно ли это как-то сделать?
Python
Мне нужно чтобы из template1 и template2 передавались данные в screen1 и screen2
Вместо
global w, template1, template2
попробуй nonlocal w, template1, template2
import tkinter as tk
import mouse
import time
import pyautogui
import cv2
import pytesseract
def difference_images(template1, template2):
# Остальной код функции difference_images оставляем без изменений
# ...
def JB():
w = False
IsAlive = True
template1 = pyautogui.locateOnScreen('offline.png')
template2 = pyautogui.locateOnScreen('online.png')
# Остальной код функции JB оставляем без изменений
# ...
# Вместо вызова difference_images() просто передаем template1 и template2 как аргументы
difference_images(template1, template2)
# ...
root = tk.Tk()
root.title("Job Bot")
root.geometry("300x250")
label = tk.Label(text="Чтобы начать нажмите старт")
label.pack()
button = tk.Button(root, text="Старт", command=JB)
button.pack()
root.mainloop()
У вас возникли проблемы с этим кодом, потому что ваши функции difference_images и JB не могут обмениваться данными напрямую. Чтобы исправить это, я предложу следующие изменения: сохраните template1 и template2 в глобальные переменные и используйте их в функции difference_images таким образом:
Примечание: в коде используется оператор (*) для раскрытия кортежа. При использовании этого оператора python автоматически преобразует кортеж (a, b, c, d) в последовательность аргументов a, b, c, d, которые можно передать в функцию.
global template1
global template2
try:
template1 = pyautogui.locateOnScreen('offline.png')
template2 = pyautogui.locateOnScreen('online.png')
except TypeError as e:
template1 = None
template2 = None
# later in your code
if template1 is not None and template2 is not None:
screen1 = pyautogui.screenshot('screenshot.png', region=(*template1,))
screen2 = pyautogui.screenshot('screenshot2.png', region=(*template2,))
Здесь я также добавил обработку TypeError, который будет подниматься, если pyautogui.locateOnScreen не сможет найти изображение и вернет None. Примечание: в коде используется оператор (*) для раскрытия кортежа. При использовании этого оператора python автоматически преобразует кортеж (a, b, c, d) в последовательность аргументов a, b, c, d, которые можно передать в функцию.
Да, вы можете передать данные из template1 и template2 в screen1 и screen2, чтобы использовать их в других функциях или местах в вашем коде.Да, вы можете передать данные из template1 и template2 в screen1 и screen2, чтобы использовать их в других функциях или местах в вашем коде.
import tkinter as tk
import pyautogui
# Объявляем переменные для хранения областей для скриншотов
template1 = None
template2 = None
def JB():
global template1, template2
w = False
IsAlive = True
# Используем глобальные переменные для хранения областей, найденных с помощью pyautogui.locateOnScreen()
template1 = pyautogui.locateOnScreen('offline.png')
template2 = pyautogui.locateOnScreen('online.png')
# ...
# В функции difference_images() используйте template1 и template2 для скриншотов
screen1 = pyautogui.screenshot('screenshot1.png', region=template1)
screen2 = pyautogui.screenshot('screenshot2.png', region=template2)
# ...
root = tk.Tk ()
root.title("Job Bot")
root.geometry("300x250")
label = tk.Label(text="Чтобы начать нажмите старт")
label.pack()
button = tk.Button(root, text="Старт", command=JB)
button.pack()
root.mainloop()
import tkinter as tk
import pyautogui
# Объявляем переменные для хранения областей для скриншотов
template1 = None
template2 = None
def JB():
global template1, template2
w = False
IsAlive = True
# Используем глобальные переменные для хранения областей, найденных с помощью pyautogui.locateOnScreen()
template1 = pyautogui.locateOnScreen('offline.png')
template2 = pyautogui.locateOnScreen('online.png')
# ...
# В функции difference_images() используйте template1 и template2 для скриншотов
screen1 = pyautogui.screenshot('screenshot1.png', region=template1)
screen2 = pyautogui.screenshot('screenshot2.png', region=template2)
# ...
root = tk.Tk ()
root.title("Job Bot")
root.geometry("300x250")
label = tk.Label(text="Чтобы начать нажмите старт")
label.pack()
button = tk.Button(root, text="Старт", command=JB)
button.pack()
root.mainloop()
Похожие вопросы
- Алгоритмы и структуры данных. Нужно ли все понимать? Просто там такие математические действия.
- Создаю программу. Нужно считать данные
- Ввод данных input(), int()
- Есть два файла .txt нужно сопоставить данные и вытащить актуальные
- Общая база данных для разных устройств
- Python Обработка данных в цикле. 7 класс
- Что такое переменные и типы данных в языке python
- Курс под названием Анализ данных на Python больше держит акцент на Big Data-у, или нет ? В чем разница между Big Data ..
- Телеграм бот/база данных
- Python - Алгоритмы структур данных