• Что означает Non-UTF-8 code starting with '\xff'?

    Vindicar
    @Vindicar
    RTFM!
    Если скрипт содержит кириллицу или иной юникод (пусть даже в комментариях или в строках), первая строка файла должна содержать указание кодировки. У тебя, я полагаю, кодировка виндовая, windows-1251. Либо укажи её явно, либо пересохрани файл в UTF-8.
    Ответ написан
  • Почему слетает кодировка?

    Vindicar
    @Vindicar
    RTFM!
    Читай документацию на json.dump(), точнее на параметр ensure_ascii.

    If ensure_ascii is true (the default), the output is guaranteed to have all incoming non-ASCII characters escaped. If ensure_ascii is false, these characters will be output as-is.
    Ответ написан
    2 комментария
  • Почему замерает окно приложения PyQt5?

    Vindicar
    @Vindicar
    RTFM!
    Потому что join() останавливает поток выполнения - в твоем случае поток GUI, который отвечает за работу окна приложения - пока целевой поток не завершится. Т.е. что ты делаешь - это эквивалент как если бы ты просто вызвал self.sucess_send_request(link, valid_proxy) прямо в обработчике события.

    Нужно дождаться завершения к какому моменту? К моменту закрытия окна? Или ещё к какому?
    Я бы сделал так: создай глобальные объекты (например, поля класса), доступные всем потокам. Один - типа threading.Lock, один - счётчик и один - типа threading.Event().
    Когда поток запускается, он захватывает Lock, увеличивает счётчик и сбрасывает Event (метод clear()), отпускает Lock.
    Когда поток готов завершиться, он захватывает Lock, уменьшает счётчик. Если после уменьшения счётчик стал равен 0, устанавливает Event (метод set()). Затем отпускает Lock. Убедись, что это происходит внутри try: finally:, чтобы непойманное исключение не сломало систему.

    Тогда главный поток приложения может просто время от времени проверять текущее значение счётчика (число активных потоков). А если надо, то может ждать на объекте Event, чтобы дождаться завершения всех потоков.
    Ответ написан
    3 комментария
  • Как отправить post запрос с изменяющимися данными?

    Vindicar
    @Vindicar
    RTFM!
    Разобраться как они генерируются и сгенерировать самому. Без вариантов.
    Ответ написан
  • Почему сначала заканчивается func1, а уж потом выводит, что func1 началась?

    Vindicar
    @Vindicar
    RTFM!
    t = threading.Thread (target = func1())
    Ты запускаешь поток, в качестве тела которого указываешь то, что вернула после вызова func1.
    Это None, и поток ничего не делает.
    Исправь на
    t = threading.Thread (target = func1)
    Нужно запомнить разницу:
    func1 - ссылка на функцию
    func1() - результат вызова функции без параметров
    Ответ написан
    Комментировать
  • Как одной строчкой вызвать методы из всех экземпляров класса?

    Vindicar
    @Vindicar
    RTFM!
    Храни все экземпляры в списке, итерируй по списку.
    Ответ написан
    Комментировать
  • Можно ли сократить код с помощью numpy?

    Vindicar
    @Vindicar
    RTFM!
    Какие числа могут быть в парах? Если любые, то дело осложняется.
    Если же небольшие целые положительные, то можно посчитать так.
    Строишь двумерный массив, где первый индекс - первое число из пары, второй - второе.
    Заполняешь нулями, потом увеличиваешь элемент на единицу каждый раз, когда встречена такая пара.
    Если две пары имеют общее число, они будут лежать на одной строке или на одном столбце.
    Тогда если пара не имеет общих чисел с другими, то сумма значений на её строке и её столбце будет 1.
    Если две пары имеют общее число, то сумма значений на их общем строке/столбце будет 2. И так далее.
    Отсюда вывод: для каждой строки и каждого столбца посчитай сумму значений минус 1 (но ограничь снизу по нулю!). Просуммируй полученные числа, и получишь ответ.
    Ответ написан
    Комментировать
  • Не получается добавить иконку к программе на Python?

    Vindicar
    @Vindicar
    RTFM!
    Иконка должна быть в формате ico, а не jpg, и иметь строго определённый размер (типовые размеры 16х16, 32х32, 64х64, 128х128).
    Если нет ico файла, также допустимо выдрать иконку из exe или dll файла, что pyinstaller и пытается сделать. Безуспешно, так как вы дали ему jpg.
    Ответ написан
    2 комментария
  • Как убрть служебный импорт?

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

    Vindicar
    @Vindicar
    RTFM!
    self.battery_size = Battery()
    на
    self.battery = Battery()
    Ответ написан
    1 комментарий
  • Считывание программой файл, может кто знает решение?

    Vindicar
    @Vindicar
    RTFM!
    Опишите квадрат как структуру данных - обычный класс, датакласс, именованный кортеж, что угодно. Это позволит вам:
    1. убрать дублирование кода для двух квадратов, и устранить нужду в десятках переменных. У вас будет два экземпляра класса "квадрат", а данные квадратов будут скрыты внутри них.
    2. разделить описание квадрата + операции над ним и его отображение в интерфейсе. Два простых взаимодействующих класса - это обычно лучше чем один сложный.

    Также имейте ввиду, что часто лучше хранить необходимый минимум данных, и вычислять остальное. Это позволит избежать противоречий в данных - например, в вашем коде координаты вершин могут формировать произвольный четырёхугольник вместо квадрата. Если нужен именно квадрат, и именно не-повёрнутый, то я бы написал класс примерно так:
    class Square:
      #конструктор принимает координаты левой верхней вершины и длину стороны квадрата
      def __init__(self, x: int, y: int, a: int):
        self.topleft = (x,y) #давайте переменным более читаемые имена!
        self.side = a
      
      @property
      #это будет свойство - оно будет вычисляться по запросу, а не храниться
      def topright(self):
        return (self.topleft[0]+self.side, self.topleft[1])
      @property
      def bottomleft(self):
        return (self.topleft[0], self.topleft[1]+self.side)
      @property
      def bottomright(self):
        return (self.topleft[0]+self.side, self.topleft[1]+self.side)
      
      def save(self, file): #сохраняем себя в файл
        pass #код этого метода напишите сами
      
      @classmethod
      # это метод класса, он будет вызываться как Square.load(), а не для конкретного экземпляра Square
      def load(cls, file): #загружаем новый квадрат из файла
        x = ... #напишите код загрузки сами
        y = ...
        side = ...
        return cls(x, y, side)
    Ответ написан
  • Как сделать покупку валюты в боте Discord?

    Vindicar
    @Vindicar
    RTFM!
    Если API представляет все необходимые для этого операции, вы можете им воспользоваться и это не противоречит законодательству - то можно.
    Все три "если" - это вопросы, на которые нужно знать ответ.

    Предполагая что первое и третье предположения верны, техническая сторона дела проблем не составит.
    Ответ написан
    Комментировать
  • Декомпозиция временного ряда. Почему отображает много NaN в остатках?

    Vindicar
    @Vindicar
    RTFM!
    Я предполагаю, что функция использует метод скользящего окна, т.е. анализирует некоторое нечётное N точек данных, чтобы вычислить искомую величину в средней точке. Например, для N=7 у нас помимо текущей точки будет использоваться три точки до текущей и три после.
    Но для крайних точек это не подходит, так как у них нет достаточного количества соседей с той или с другой стороны.
    Ответ написан
    Комментировать
  • Как сделать так, чтобы запускался только 1 интервал?

    Vindicar
    @Vindicar
    RTFM!
    Перемести interval из локальной переменной функции куда-то, где он будет храниться долго.
    Например, в глоабльную переменную, а лучше в поле класса.
    Тогда ты сможешь проверить, если interval не является undefined, то таймер уже установлен.
    Ответ написан
    3 комментария
  • Почему программа требует перезагрузку после установки?

    Vindicar
    @Vindicar
    RTFM!
    Если вы дали установщику права админа для установки, то поздно пить боржоми, он уже сделал что хотел. Нужно было сразу прогнать на VirusTotal.

    Перезагрузка обычно требуется для установки служб/драйверов.
    Поскольку программа предназначена для записи экрана, по идее она может ставить драйвер-фильтр, чтобы перехватывать выводимые на экран изображения. Либо, альтернативно, чтобы создать "виртуальную вебкамеру", которая отображает захватываемый контент.
    Ответ написан
    1 комментарий
  • Как заблокировать человека в боте?

    Vindicar
    @Vindicar
    RTFM!
    Храни список (в файле, а лучше в базе данных) ID заблокированных, при поступлении команды проверяй что ID отправителя сообщения нет в списке.

    Опциональные фишки типа хранения причины бана или даты, когда истекает бан, по желанию.
    Ответ написан
    Комментировать
  • Что делать при ошибки Non-UTF-8 code starting with?

    Vindicar
    @Vindicar
    RTFM!
    Вообще эта ошибка обычно возникает не из-за переводов строки. В начале файла кодировка указана?
    Если нет, то добавь в начало файла строчку
    # -*- coding: encoding name -*-
    вместо encoding name подставь windows-1251 (если пользуешься старой тупорылой кодировкой) или utf-8, смотря в какой кодировке твой исходник.
    Ответ написан
    Комментировать
  • Как решить ValueError: The truth value...?

    Vindicar
    @Vindicar
    RTFM!
    numpy намекает, что выражение rgb != bg_color вернёт не логическое значение, а массив логических значений - результатов сравнения каждого элемента. Иными словами,
    print(numpy.array([1, 2, 3]) != numpy.array([1, 2, 4])) выведет [False, False, True]
    Как следствие, непонятно, считать ли такой массив истинным или ложным если в нём несколько значений и они разные.
    Предпреждение подсказывает и как это поправить.
    Если тебе нужно любое несовпадение, то пишешь (rgb != bg_color).any().
    Если нужно, чтобы все три канала цвета были разными, то (rgb != bg_color).all().

    Но если честно, cleared_img_data - какой-то странный массив.
    Ответ написан
    1 комментарий
  • Как исправить ошибку Python Tkinter?

    Vindicar
    @Vindicar
    RTFM!
    Дело в этом коде:
    data = result.split()
                fun_name = data[0]
                arg = data[1:]
                bank_fun[fun_name](arg)

    Вы разбиваете введённую строку по пробельным символам (в т.ч. табы и переводы строки), но не проверяете ни есть ли функция с таким именем, ни правильное ли количество параметров передано, ни правильно ли записаны числа. Т.е. если у вас более трёх пробельных частей в строке, то в arg попадёт более двух значений, а не все функции это позволяют.

    Кратковременное решение: добавьте отлов исключений и проверку корректности вводимого текста.

    Более долгое но правильное решение: не изобретайте велосипед, а освойте модуль argparse, чтобы удобно разбирать команды и контролировать их корректность. А для удобного разбора строки (в том числе фишек типа "завернуть строку с пробелами в кавычки чтобы считалась как один аргумент") используйте модуль shlex. Оба модуля в стандартной поставке питона.
    Ответ написан
    Комментировать
  • Как перехватить traceback из subprocess?

    Vindicar
    @Vindicar
    RTFM!
    Если я верно понял, что пробелма в синхронном вводе-выводе при общении с дочерним процессом, то я бы посмотрел в сторону asyncio, чтобы анализировать полученное содержимое stderr постепенно, по мере его появления. Может, оверкилл, но должно сработать.
    Вот примерная идея, найденная на stackoverflow.
    Ответ написан
    Комментировать