• Почему сразу закрывается окно в PYQT?

    Vindicar
    @Vindicar
    RTFM!
    Во-первых, наверняка программа выводит сообщение об ошибке в консоль. Запусти её из терминала или IDE, чтобы этто сообщение увидеть.

    Во-вторых, я готов спорить что ты создаёшь QtWidgets.QApplication(sys.argv) не только в рамках create_reg_window(), но и в теле программы. А если я верно помню, в Qt приложении должен быть один и только один объект QApplication. Скорее всего, ошибка в этом. Так что гугли, как правильно делать приложение с несколькими окнами в Qt.
    Ответ написан
    1 комментарий
  • Как двигать обьект по вектору?

    Vindicar
    @Vindicar
    RTFM!
    Ну для начала, тебе стоит помнить, что у тебя ДВЕ координатных системы.
    1. Координаты окна. Они используются при рисовании шарика в окне и при получении позиции мыши.
    2. Координаты мира. Они определяют позицию объектов в мире и используются при определении коллизий шарика с другими шариками и "едой".
    Ты можешь принять решение, что эти координатные системы совпадают, и я подозреваю что ты так и сделал. Но это будет иметь последствия.

    С положительной стороны, тебе не надо преобразовывать координаты из одной системы в другую, и в частности не надо реализовывать скроллинг мира. Но тогда положение мыши относительно шарика меняется, даже если пользователь ничего не делает. Потому что шарик будет "догонять" мышь, вместо того чтобы скроллить мир в этом направлении.

    А шарик перестанет двигаться, достигнув позиции мыши - потому что у него уже не будет направления на мышь, так как их позиции совпадают. Если точнее, шарик будет легонько колебаться вокруг позиции мыши.

    Так что либо смирись с тем, что шарик может "догнать" мышь, либо реализуй полноценное преобразование координат. Тогда отрисовываться у тебя будет не весь мир, а только "окно", центрированное на позиции игрока.
    Ответ написан
    Комментировать
  • Ошибка TypeError: 'tuple' object is not callable?

    Vindicar
    @Vindicar
    RTFM!
    result = cursor.execute("SELECT id, name, price, colvo FROM tovars").fetchone()
    return result

    fetchone() возвращает либо None, либо кортеж (tuple). Значит, get_item() возвращает None (если такой строки нет) или tuple (если она есть).

    result = get_item()
    tgitem = result()

    Ты пытаешься вызвать (call) кортеж (tuple), как будто это функция. Так нельзя, и питон тебе так и говорит:
    TypeError: 'tuple' object is not callable

    Читай учебник, что такое кортежи.
    Ответ написан
    9 комментариев
  • У мне выдаёт ошибку, что надо сделать?

    Vindicar
    @Vindicar
    RTFM!
    А вот открыть документацию и почитать не пробовал?
    Открой, почитай, и ответь на три вопроса:
    1. Как называется параметр send(), принимающий эмбед?
    2. Как ты называешь этот параметр при вызове send()?
    3. Совпадает ли имя из пункта 2 с именем из пункта 1?
    Ответ написан
    1 комментарий
  • Как улучшить цикл for?

    Vindicar
    @Vindicar
    RTFM!
    Я вижу одну проблему: i может содержать спецсимволы регулярных выражений, а ты это не учитываешь. re.escape() в помощь.
    Также, если в списке st не так много строк (<100), может иметь смысл сделать одно регулярное выражение.
    # если список st меняется не для каждой строки, 
    # имеет смысл его подготовить один раз, заранее
    parts = '|'.join(list(map(re.escape, st)))
    regexp = re.compile(f'\\b(?:{parts})\\b', re.IGNORECASE)
    # при обработке строки md
    if match := regexp.search(md):
        print(x.group(0))
    Ответ написан
    Комментировать
  • Как измерить температуру процессора в си шарп?

    Vindicar
    @Vindicar
    RTFM!
    Что значит "рандом был хорошим"? Ты можешь сформулировать это в виде "генерю 100500 случайных чисел стандартным алгоритмом, в распределении видны такие-то и такие-то аномалии"?
    Если тебе для целей криптографии, то используй WinAPI функцию CryptGenRandom() или обёртки над ней. Хотя она устарела, так что можешь посмотреть в сторону BCryptGenRandom(). Ну или как выше посоветовали, пусть пользователь мышкой пошевелит.
    Для всех остальных целей тебе и дефолтный генератор сойдёт. В качестве сида возьми метку текущего времени unix, опционально смешай её с ID твоего процесса. Если тебе не требуется инициализировать десяток генераторов случайных чисел за раз, этого хватит.
    Ответ написан
    Комментировать
  • Нужно, чтобы бот из хостинга картинок отправлял рандомную. Как сделать?

    Vindicar
    @Vindicar
    RTFM!
    1. Завести список рандомных картинок.
    2. Использовать на этом списке random.choice().
    3. Отправить то, что она вернёт.
    Ответ написан
    Комментировать
  • Пишу бота в тг, выдается ошибка 'main', как решить?

    Vindicar
    @Vindicar
    RTFM!
    pprint(data)
    data = r.json()

    Тебя порядок не смущает?
    Ответ написан
    3 комментария
  • Не могу добавить иконку через pyinstaller. Что делать?

    Vindicar
    @Vindicar
    RTFM!
    from PIL import Image as PILImage
    ModuleNotFoundError: No module named 'PIL'


    Please install Pillow or convert your 'ico' file to one of ('exe', 'ico') and try again.

    ico бывают разные. Поставь пакет pillow.
    Ответ написан
    Комментировать
  • С чем связанна ошибка (socket)?

    Vindicar
    @Vindicar
    RTFM!
    user, adres = server.accept()
    data = server.recv(1024)

    Ты пытаешься принимать данные, используя слушающий сокет сервера.
    Для этого нужно использовать клиентский сокет, полученный от accept().
    Слушающий сокет используется только для приёма новых соединений.
    Ответ написан
    Комментировать
  • Local variable 'chat_info' referenced before assignment. Почему не может вернуть массив?

    Vindicar
    @Vindicar
    RTFM!
    У тебя в двух местах есть цикл вида "for row in chat", внутри которого присваивается значение chat_info.
    Нет гарантий, что этот цикл выполнится хотя бы один раз. chat может быть пустой коллекцией.
    Если цикл не выполнится, chat_info никогда не будет присвоено значение, и вернуть её будет нельзя.
    Об этом тебя и предупреждает ошибка.
    Ответ написан
    Комментировать
  • Как записать значение функции type() в переменную?

    Vindicar
    @Vindicar
    RTFM!
    Только если преобразовывать в строку и срезом вытягивать информационую часть. Но нет ли способа правильнее?

    a = 42
    print(type(a).__name__)

    Так бы и сказал, что тебе нужна строка с названием типа.
    И да, как раз с объектом типа и можно "поработать".
    Ответ написан
    Комментировать
  • Почему не работает как положено aioschedule в телеграм боте?

    Vindicar
    @Vindicar
    RTFM!
    aioschedule работает с корутинами. trackingStart() - не корутина, а обычная синхронная процедура.
    Ответ написан
    1 комментарий
  • Как управлять мышью в играх через Python?

    Vindicar
    @Vindicar
    RTFM!
    Ну я вижу целую пачку проблем с mouse_event().
    Note This function has been superseded. Use SendInput instead.

    Она устарела.
    Absolute data is specified as the mouse's actual x-coordinate; relative data is specified as the number of mickeys moved. A mickey is the amount that a mouse has to move for it to report that it has moved.

    При относительном движении координаты не в пикселях, а в каких-то других единицах.
    Relative mouse motion is subject to the settings for mouse speed and acceleration level. An end user sets these values using the Mouse application in Control Panel. An application obtains and sets these values with the SystemParametersInfo function.

    Результат зависит от настроек чувствительности и ускорения курсора.

    Так что разбирайся с SendInput(). Там нужно использовать структуру данных, что посложнее, но зато координаты в пикселях.
    Ответ написан
    Комментировать
  • Как изменить определённый элемент списка в цикле for?

    Vindicar
    @Vindicar
    RTFM!
    Потому что ты не понимаешь итерацию по списку.
    for vote in votes: означает, что переменной по имени vote поочерёдно будут присваиваться ссылки на значения элементов списка votes. ТОЧКА. Это не означает, что присвоив другое значение этой переменной, ты изменишь список. Присвоив что-то vote, ты заменишь ссылку внутри vote на другую, но и только.
    Тем не менее, если само значение является изменяемым (например, это вложенный список или словарь), то его можно по этой ссылке изменить.

    Во втором случае ты с какого-то перепугу решил, что индексы списка - это его значения. Индексы - это индексы. Числа от нуля до N-1, где N - длина списка. Так что для модификации списка нужно знать индекс элемента.
    for index in range(len(votes)):
        vote = votes[index]
        x = vote.split(',')
        votes[index] = x[0]+x[1]

    Или вот так:
    for index, vote in enumerate(votes):
        x = vote.split(',')
        votes[index] = x[0]+x[1]
    Ответ написан
    1 комментарий
  • Как запустить несколько фреймворков одновременно?

    Vindicar
    @Vindicar
    RTFM!
    Технически можно запускать их в разных потоках. Но это чревато кучей других проблем, типичных для многопоточности.
    Может, имеет смысл переделать приложение на PyQT так, чтобы оно само использова FastAPI как бэкэнд?
    Ответ написан
    Комментировать
  • Почему возникает ошибка cannot pickle '_thread.lock' object?

    Vindicar
    @Vindicar
    RTFM!
    pickle используется для проброса данных между процессами, и оно умеет сериализовывать только примитивы и простые коллекции. Какое-то из передаваемых тобой значений в parameters не подпадает под это определение.
    Я подозреваю что это self.client, но это уже тебе надо проверять.
    Ещё раз: в другой процесс можно передавать числа, строки, логические значения, кортежи, списки, словари. Всё остальное - без гарантий.
    Ответ написан
  • Как проходить по ссылкам в selenium без прерывания?

    Vindicar
    @Vindicar
    RTFM!
    1. Определить, к какому классу принадлежит выбрасываемое исключение
    2. Поймать это исключение блоком try-except
    Ответ написан
  • Error binding parameter 0 - probably unsupported type почему?

    Vindicar
    @Vindicar
    RTFM!
    if db.create_chat(message.chat.id, chat_two) == False:

    т.е. проблема в значении chat_two
    chat_two = db.get_chat()
    Смотрим что возвращает get_chat()
    user_info = [row[1], row[2]]
    return user_info

    или
    return [0]

    Т.е. get_chat() возвращает список, ты этот список пытаешься скормить напрямую в self.cursor.execute(), который такие извращения не поддерживает.

    Что делать не посоветую, так как прямо говоря, код паршивый. Отложи бота и почитай хорошую книжку, типа Лутца "Изучаем Питон", а также приучайся пользоваться type hints - такие косяки должна среда разработки отлавливать.
    Ответ написан
    Комментировать