Как сохранить информацию о цвете, полученную из скриншота с помощью pyautogui, в базе данных?

Как изменить код Python, использующий biblioteki PyQt5 и pyautogui, чтобы успешно записать цвет по заданным координатам в базу данных SQLite?
  • 31 марта 2024 г. 3:29
Ответы на вопрос 2
Для сохранения информации о цвете, полученной из скриншота с помощью pyautogui, в базе данных, необходимо следующее:

1. Сначала необходимо установить библиотеку SQLite для работы с базой данных SQLite в Python. Для этого можно использовать стандартный модуль sqlite3:

```
import sqlite3
```

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

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

cursor.execute('''CREATE TABLE IF NOT EXISTS colors (x INT, y INT, color TEXT)''')

cursor.execute('''INSERT INTO colors VALUES (?, ?, ?)''', (x_coord, y_coord, color))

conn.commit()
conn.close()
```

3. Где x_coord и y_coord - это координаты, по которым был получен цвет, а color - сам цвет, который был получен из скриншота.

Чтобы изменить код Python, использующий библиотеки PyQt5 и pyautogui для успешной записи цвета в базу данных SQLite, вы можете включить указанный выше код в ваш GUI-скрипт на PyQt5. Например, при нажатии кнопки "Save Color" выполнять запись цвета в базу данных:

```
def save_color():
    x, y = pyautogui.position()
    color = pyautogui.screenshot().getpixel((x, y))
    
    conn = sqlite3.connect('colors.db')
    cursor = conn.cursor()

    cursor.execute('''CREATE TABLE IF NOT EXISTS colors (x INT, y INT, color TEXT)''')

    cursor.execute('''INSERT INTO colors VALUES (?, ?, ?)''', (x, y, color))

    conn.commit()
    conn.close()
```

После этого при каждом нажатии кнопки "Save Color" будет происходить запись цвета в базу данных SQLite.
Преобразовал 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()
Похожие вопросы