Как записывать цвет со скриншота pyautogui в БД?

Ссылка скопирована
1 ответ

Доброй ночи, у меня код на pyqt5 и pyautogui, который чекает цвет по координатам и записывает этот цвет в БД, но я столкнулся с проблемой, что цвет, который мне даёт pyautogui.screenshot() не хочет записываться в БД, pyqt5 просто крашит и проблема точно в этом (проводил тесты, но проблему не решил)

Main.py:

def search_color(self):         self.conn = sqlite3.connect('login.db')         self.cur = self.conn.cursor()          coords = self.cur.execute(             'SELECT coord_X, coord_y FROM settings_autoswap WHERE login = ?',             (self.login,)).fetchone()  # забирает координаты из БД         if coords[0] == 0 and coords[1] == 0:  # проверка равняются ли они дефолтному значению             msg = QMessageBox()             msg.setIcon(QMessageBox.Information)             msg.setText("Чтобы найти цвет, вам надо ввести в поля выше ваши координаты, если вы ещё не ввели их, то введите ваши координаты!")             msg.setWindowTitle("Внимание!")             msg.setStandardButtons(QMessageBox.Ok | QMessageBox.Cancel)             msg.exec_()         else:             Color = pyautogui.screenshot().getpixel((coords[0], coords[1]))  # поиск цвета по координатам из БД (цвет ищет, делал тесты)             self.cur.execute(                 'UPDATE settings_autoswap SET color = ? WHERE login = ?',                 (Color, self.login))             self.conn.commit() # запись цвета в БД (на этом месте крашит и в БД ничего не записывается)

def search_color(self): self.conn = sqlite3.connect('login.db') self.cur = self.conn.cursor() coords = self.cur.execute( 'SELECT coord_X, coord_y FROM settings_autoswap WHERE login = ?', (self.login,)).fetchone() # забирает координаты из БД if coords[0] == 0 and coords[1] == 0: # проверка равняются ли они дефолтному значению msg = QMessageBox() msg.setIcon(QMessageBox.Information) msg.setText("Чтобы найти цвет, вам надо ввести в поля выше ваши координаты, если вы ещё не ввели их, то введите ваши координаты!") msg.setWindowTitle("Внимание!") msg.setStandardButtons(QMessageBox.Ok | QMessageBox.Cancel) msg.exec_() else: Color = pyautogui.screenshot().getpixel((coords[0], coords[1])) # поиск цвета по координатам из БД (цвет ищет, делал тесты) self.cur.execute( 'UPDATE settings_autoswap SET color = ? WHERE login = ?', (Color, self.login)) self.conn.commit() # запись цвета в БД (на этом месте крашит и в БД ничего не записывается)

Дополнительно:

Ответы:

Преобразовал Color в str и всё записалось:

screen = pyautogui.screenshot().getpixel((coords[0], coords[1]))             color = str(screen)             print(color)             self.cur.execute(                 'UPDATE settings_autoswap SET color = ? WHERE login = ?',                 (color, self.login))             self.conn.commit()

screen = pyautogui.screenshot().getpixel((coords[0], coords[1])) color = str(screen) print(color) self.cur.execute( 'UPDATE settings_autoswap SET color = ? WHERE login = ?', (color, self.login)) self.conn.commit()

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Юрий Linux Ответ

Для записи цвета, полученного с помощью библиотеки PyAutoGUI, в базу данных можно воспользоваться следующим способом:

1. Сначала необходимо получить цвет с экрана с помощью метода `screenshot()` и `pixel()` из библиотеки PyAutoGUI. Например, таким образом можно получить цвет пикселя в координатах (x, y):

```php
import pyautogui

x, y = 100, 200
color = pyautogui.pixel(x, y)
```

2. Далее необходимо подключиться к базе данных. Для примера, воспользуемся библиотекой SQLite3:

```php
import sqlite3

conn = sqlite3.connect('colors.db')
cursor = conn.cursor()
```

3. Создадим таблицу в базе данных для хранения цветов:

```php
cursor.execute('''CREATE TABLE IF NOT EXISTS colors (
id INTEGER PRIMARY KEY AUTOINCREMENT,
red INTEGER,
green INTEGER,
blue INTEGER
)''')
```

4. Теперь можно записать полученный цвет в базу данных:

```php
red, green, blue = color
cursor.execute('INSERT INTO colors (red, green, blue) VALUES (?, ?, ?)', (red, green, blue))
conn.commit()
```

5. Не забудьте закрыть соединение с базой данных после завершения работы:

```php
conn.close()
```

Таким образом, вы можете получить цвет с экрана с помощью PyAutoGUI и сохранить его в базе данных для последующего использования.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно