• Uniqueviolation: duplicate key value violates unique constraint?

    Vindicar
    @Vindicar
    RTFM!
    Криво написан SQL.
    INSERT INTO memcfc (photo , name , discription) VALUES
            (' ? ',' ? ',' ? ');

    Ты передаёшь в качестве значений строки " ? ". Именно строку "пробел вопросительный знак пробел". Это НЕ плейсхолдер для подстановки параметра, подставляемые параметры в этом запросе игнорируются.
    Я так подозреваю, ты имел ввиду
    INSERT INTO memcfc (photo , name , discription) VALUES (?, ?, ?);

    (И да, правильно пишется dEscription)
    Ответ написан
    2 комментария
  • Как на python открыть содержимое pdf?

    Vindicar
    @Vindicar
    RTFM!
    По каким запросам гуглил? У меня вот "python render pdf to image" нашел пост, указывающий на pdf2image:
    from pdf2image import convert_from_path, convert_from_bytes
    # если у тебя есть именованный файл на диске
    images = convert_from_path('/home/belval/example.pdf')
    # или, если у тебя есть содержимое файла как объект bytes
    bytes_obj = open('/home/belval/example.pdf', 'rb').read()  # получаем объект bytes
    images = convert_from_bytes(bytes_obj)
    # так или иначе в images будет лежать список изображений PIL (пакет pillow), 
    # по одному на страницу. Их уже можно сохранять или делать с ними что-то ещё.

    Как вывести изображение PIL в GUI на PyQT - это уже второй вопрос.
    Ответ написан
    Комментировать
  • Как распределить цифры в питоне?

    Vindicar
    @Vindicar
    RTFM!
    Obbi-Man, абсолютно учебное задание, делай сам.
    Всё, что тебе нужно, это
    random.randint(), len() и оператор del

    Всё равно непонятно!
    Сделай список нужных чисел, генери случайный индекс (от 0 до длины списка - 1), добавь число по этому индексу в итоговый список, удали число по индексу из исходного списка. Повторяй, пока исходный список не пуст.
    Ответ написан
    Комментировать
  • Почему при вызове функции guild.members discord.py выводит только один профиль?

    Vindicar
    @Vindicar
    RTFM!
    Интент members задал? Дискорд посылает инфу о пользователях (как профили, так и события входа/выхода) только если бот её явно запрашивает при старте.
    Ответ написан
  • Как сделать чтобы одна команда моего бота дискорд работала только в одном канале, а в других нет Discord - Python?

    Vindicar
    @Vindicar
    RTFM!
    скорее всего по айди канала

    Да. Читай доки на параметр ctx, там есть сведения о канале.
    Ответ написан
  • Как можно определить что цвет относится к синему (оттенки синего)?

    Vindicar
    @Vindicar
    RTFM!
    Очевидно, нужно определить, что с твоей точки зрения "оттенок синего".
    Например, "синяя составляющая должна быть максимальной, и должна не менее чем в два раза превышать большую из красной и зеленой составляющих". Но этот подход ограничен, так как RGB (а точнее BGR) модель не слишком удобна для таких манипуляций с цветом.

    Для большего удобства переведи цвет в HSV. Тогда ты сможешь огранить цвет (H) некоторым диапазоном, задать минимально допустимую насыщенность (S, чем меньше - тем более серый цвет) и минимально допустимую яркость (V).
    Ответ написан
    1 комментарий
  • Как определить квадрат, прямоугольник и пустой фон OpenCV?

    Vindicar
    @Vindicar
    RTFM!
    Можешь попробовать найти контур, а потом использовать cv2.minAreaRect() для поиска минимального повёрнутого ограничивающего прямоугольника. minAreaRect() тебе вернёт кортеж вида (cx, cy), (w, h), angle, где cx, cy - координаты центра, w, h - размеры прямоугольника, angle - угол поворота в градусах.
    Имей ввиду, что отношение w/h будет близко к единице для квадратов, но не обязательно равно единице. Тебе придётся выбрать какой-то порог отсечения.

    А ещё посоветую ознакомиться вот с этой статьёй, там тоже интересный подход.
    Ответ написан
    1 комментарий
  • Как вставлять текст в поле Enter (tkinter)?

    Vindicar
    @Vindicar
    RTFM!
    Только что проверил, Ctrl-V работает.
    Если тебе нужно другое сочетание клавиш, то ЕМНИП это делается так
    entry_widget.event_generate('<<Paste>>')
    Привязываешь свою функцию к нужному сочетанию клавиш (это гуглится), и выполняешь эту команду, когда нужно вставить текст.

    Наконец, можно использовать Python пакет clipboard, чтобы читать прямо из буфера обмена.
    Ответ написан
  • Как запустить поток через время?

    Vindicar
    @Vindicar
    RTFM!
    Запустить поток сразу, но в потоке первым делом уснуть на заданное время?
    Объект timedelta имеет метод totalseconds(), который даст длительность интервала в секундах, как раз как это требуется time.sleep().
    Для небольших интервалов (в пределах минут) сойдёт.
    Ответ написан
  • Почему парсер выдаёт такое и как это решить?

    Vindicar
    @Vindicar
    RTFM!
    Не знаешь английского - засунь в переводчик.
    Первая строка сообщает, что питоновская библиотека urllib3 (requests - это обёртка над ней) коннектится к целевому сайту.
    Вторая строка сообщает, что сайт ответил на запрос кодом 200 ОК ("запрос принят, вот запрошенные данные").

    Это просто детальный, отладочный журнал работы, который не содержить никаких сообщений об ошибках. Ты же сам написал logging.basicConfig(level=logging.DEBUG), т.е. показывать отладочныые сообщения.
    Ответ написан
  • Почему я получаю ошибку End of statement expected("python")на 7 и 8 строке?

    Vindicar
    @Vindicar
    RTFM!
    img{"010011101": 'Cats'}
    Я не знаю, что ты пытался сделать, но это НЕ корректный синтаксис в Питоне.
    Ответ написан
    Комментировать
  • Что означает: аргументе функции?

    Vindicar
    @Vindicar
    RTFM!
    Аннотация типа аргумента. Интерпретатор питона его игнорирует, но IDE и статические анализаторы могут использовать эти сведения, чтобы поймать ситуации, когда в функцию передаются данные неверного типа.

    Также сама программа при желании может получить доступ к этим аннотациям. Есть библиотеки, которые этим пользуются.
    Ответ написан
    Комментировать
  • Почему RegexMatchError не отрабатывает в блоке except?

    Vindicar
    @Vindicar
    RTFM!
    File "C:\Users\vizzy\Desktop\program\testapi\bot\app_video\main.py", line 19, in create_video
        yt = YouTube(l)


    Этой строки нет в приведённом коде. У тебя исключение выбрасывается не внутри этого try, а где-то ещё.
    Ответ написан
  • Он не хочет заполнять пользователей, и я не знаю как сделать что бы заполняло почему ошибка?

    Vindicar
    @Vindicar
    RTFM!
    А с какого перепугу он должен заполнять пользователей, если на момент цикла
    for guild in bot.guilds:
        for member in guild.members:

    бот ещё не подключён к сети?
    Почитай про событие on_ready, там прямо написано:
    Called when the client is done preparing the data received from Discord. Usually after login is successful and the Client.guilds and co. are filled up.

    Т.е. только после этого события имеет смысл обращаться к списку гильдий бота.э
    Ответ написан
    Комментировать
  • Почему не видит файл?

    Vindicar
    @Vindicar
    RTFM!
    Нельзя импортировать файл, находящийся в папке уровнем выше.
    Ну, по-нормальному нельзя. Можно через задницу.
    Лучше сделай иначе: пусть бот принимает какой-то объект с настройками. Как параметр конструктора, как отдельный метод... да хоть как. Главное, чтобы сам не импортировал.
    В корневой папке проекта держи main.py, который импортирует настройки, импортирует бота, скармливает боту настройки и запускает бота. И этот main.py уже запускай.
    Ответ написан
    Комментировать
  • Как сигнализировать когда объект выходит за границы?

    Vindicar
    @Vindicar
    RTFM!
    Вопрос и впрямь не по питону, алгоритм легко портируется.
    Если нужно детектить именно пересечение любой из точек границы, и именно для круга и квадрата, то это очень просто. Уменьши квадрат, сдвинь каждую сторону внутрь на радиус круга.
    Например, у тебя был квадрат от (0;0) до (100;100), круг радиусом 10 (диаметром 20). Новый квадрат будет от (10;10) до (90;90).
    После этого проверяй, входит ли центр круга внутрь нового квадрата. Если входит - круг внутри исходного квадрата. Если центр на стороне - круг касается стороны исходного квадрата. Если центр вне нового квадрата - круг вышел за границу исходного.
    Проверка вхождения точки внутрь ортогонального (стороны параллельны осям координат) прямоугольника выполняется тривиально, сам догадаешься как.

    Есть второй способ, базируется на массивах numpy (python-opencv их использует для хранения массивов пикселей изображения).
    Делаешь два изображения-маски (одноканальных, одного размера), одно для одного объекта, другое для другого. В твоём случае одно (A) будет содержать белый круг на чёрном фоне, а другое (B) - чёрный квадрат на белом фоне.
    Тогда можно будет сделать так:
    intersection = numpy.logical_and(A, B)
    if intersection.any():
        print('Collision!')

    logical_and() вернёт логический массив того же размера, что A и B. Элемент массива будет истиннен только если соотвествующие элементы в A и B будут ненулевыми.
    Таким образом, если два объекта пересекаются, то logical_and() вернёт True для пересёкшихся пикселей.
    А метод any() вернёт True если любой элемент массива истинен, т.е. если есть хоть один пересёкшийся пиксель.

    Этот метод куда более ресурсоёмкий, чем то что я описал в выше,но зато работает для объектов произвольной формы. Только нарисуй их.
    Кроме того, можно сделать numpy.count_nonzero(intersection), чтобы узнать, насколько велико пересечение (сколько пикселей в нём). Это тоже может быть полезно если ты хочешь "прощать" небольшие пересечения.
    Ответ написан
    2 комментария
  • Python SQLite как правильно сделать выборку?

    Vindicar
    @Vindicar
    RTFM!
    Хранишь отдельно строку запроса и отдельно список значений.
    Инициализируешь строку запроса SELECT * FROM table WHERE (1 = 1) - тогда у тебя будет корректный запрос и при наличии, и при отсутствии параметров.
    Затем для каждого параметра проверяешь, если он был передан - к строке запроса добавляешь f'AND ({paramname} = ?)' (где paramname это имя параметра), а в список значений добавляешь в конце значение этого параметра. Если не передан - не делаешь ничего.
    Тогда у тебя в конце будет строка вида
    SELECT * FROM table WHERE (1 = 1) AND (b = ?) AND (c = ?)
    , и к ней список значений, которые sqlite должна будет подставить вместо ?. Читай документацию на метод execute(), как это сделать.
    Ответ написан
    1 комментарий
  • Почему бот не видит сообщения?

    Vindicar
    @Vindicar
    RTFM!
    Потому что ты не думаешь, что пишешь.
    msg = event.text.lower()
    Ты переводишь сообщение в нижний регистр...
    if msg == "Старт" or msg == "Меню":
    ...а сравниваешь со строкой не в нижнем. Конечно, она никогда не будет равна.
    Ответ написан
    3 комментария
  • Как спрятать элементы по нажатию на кнопку?

    Vindicar
    @Vindicar
    RTFM!
    Запиши первоначально скрытые элементы в массив, и храни этот массив.
    Используй его и для скрытия и для показа.
    Ответ написан
    Комментировать
  • Как уменьшить время прохождения кривой?

    Vindicar
    @Vindicar
    RTFM!
    1. Определи длину points через свойство shape.
    2. Раздели общий интервал на длину points.
    3. Полученное значение используй в time.sleep().
    Ответ написан
    4 комментария