Как записывать цвет со скриншота pyautogui в БД?
Доброй ночи, у меня код на 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()
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для записи цвета, полученного с помощью библиотеки 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 и сохранить его в базе данных для последующего использования.