Задать вопрос
Ответы пользователя по тегу Python
  • Почему не открывается файл?

    Vindicar
    @Vindicar
    RTFM!
    Никогда не работал с этим фреймворком, но есть подозрение.
    a.on_selection = self.selected(a.selection)
    ты присваиваешь свойству on_selection возвращаемое значение метода selected(). Так как метод ничего не возвращает, это None. Т.е. ты говоришь, что никакой реакции на on_selection не надо делать.
    Подозреваю, что правильно будет
    a.on_selection = self.selected
    и обрати внимание, что нет скобок! Вместо вызова метода мы передаём ссылку на него.

    Далее, можно было бы и самостоятельно догадаться в чём дело, но тебя сбило с толку вот эта "обработка" исключений:
    try:
                self.ids.my_image.source = filename[0]
            except:
                pass

    Возьми хорошую железную линейку, и пару раз врежь себе по пальцам, чтобы запомнить что так делать не стоит никогда. Теперь вместо сколь-нибудь вменяемого сообщения об ошибке, по которому можно докопаться до её первопричины, программа просто молча не работает.
    Ответ написан
  • Как вставить фото в embed и строки?

    Vindicar
    @Vindicar
    RTFM!
    1. Гуглить пробовали? Вторая же ссылка по запросу "discord.py embed" ведёт вот на этот пошаговый туториал.

    2. "You Won Free Nitro"? Ну-ну. Зарепортил вопрос.
    Ответ написан
    Комментировать
  • Как обратиться к ключам словаря через input?

    Vindicar
    @Vindicar
    RTFM!
    Засунь словарь в словарь.
    dinos = {
        'carno' : { 'weight': 2170, 'health': 2170, 'bite': 200, 'bleed': 15, 'sbite': 0, 'sbleed': 0 }
        'maia' : { 'weight': 2868, 'health': 2868, 'bite': 175, 'bleed': 0, 'sbite': 0, 'sbleed': 0 }
    }
    
    while True:
        print('Enter attacking dino name: ', end='')
        name = input()
        if name not in dinos:
            print(f'No such dino: {name}')
        else:
            dino = dinos[name]
            break
    #работаем с dino
    Ответ написан
    Комментировать
  • Как парсить cmd окно?

    Vindicar
    @Vindicar
    RTFM!
    Вариант 1. Заставить программу вывести данные в файл (как показал Hemul GM), затем прочитать этот файл.
    Вариант 2. Запустить программу самому через модуль subprocess. Он позволяет перехватить стандартный вывод процесса (т.е. вывод в консоль) и вернуть его содержимое в виде строки.
    Вариант 3. Раз уж в целевой программе есть сетевая поддержка, можно попробовать получить информацию через локальное соединение. Но нужно иметь представление о протоколе обмена (что нужно послать, чтобы запросить данные, и как интерпретировать ответ). Само соединение обеспечит модуль socket.
    Ответ написан
    Комментировать
  • Как можно сделать бонус раз в 24 часа?

    Vindicar
    @Vindicar
    RTFM!
    Фиксируешь время нажатия на кнопку.
    Выбираешь из базы значение предыдущего времени по id пользотеля запросом SELECT.

    Если значения нет, человек пишет в первый раз, заносим значение времени и id пользователя в базу запросом INSERT. Отправляем сообщение о бонусе.

    Если значение есть, и разница между ним и текущим временем более 24 часов, человек может получить бонус. Обновляем значение в базе запросом UPDATE и отправляем сообщение о бонусе.

    Если значение есть, и разница менее 24 часов, отправляем сообщение с оставшимся до следующего бонуса временем.
    Ответ написан
  • Как открыть другой исполняемый файл .py по кнопке?

    Vindicar
    @Vindicar
    RTFM!
    Потому что у тебя в вызываемом файле делается повторная инициализация приложения.
    Весь этот вот код
    app = QtWidgets.QApplication([])
    application = X() #где X - имя класса формы
    application.show()
    
    sys.exit(app.exec())

    выполняется как при прямом запуске файла, так и при его импорте.

    Есть два решения:
    а) убрать код инициализации из вспомогательных файлов, оставить его ТОЛЬКО в главном файле.
    б) если позарез нужно, чтобы вспомогательные файлы можно было запускать сами по себе без главного, то заверни этот код в конструкцию вида
    if __name__ == '__main__':
        #тут код, который будет выполняться
        #ТОЛЬКО если файл запущен сам по себе
        #и не будет выполняться, если этот файл импортируют
    Ответ написан
    5 комментариев
  • Как сделать текстовую игру в стиле бота в телеграмме на языке python?

    Vindicar
    @Vindicar
    RTFM!
    Учи, что такое конечные автоматы, и как их реализовывать. По сути, это тебе даст необходимую базу для реализации игры. Каждый сюжетный шаг будет состоянием, а действия игрока - переходами.

    Есть несколько способов их реализации, хорошо подумай, какой удобнее. Например, вариант с матрицей переходов будет работать плохо.
    Ответ написан
    Комментировать
  • Как управлять консольным приложением через python?

    Vindicar
    @Vindicar
    RTFM!
    Ответ написан
    Комментировать
  • Как лучше сделать функцию прибавления +30 в бд, так чтобы при 2 пользователях не вис код, и не ждал окончания цикла?

    Vindicar
    @Vindicar
    RTFM!
    Учи, как работает асинхронное программирование.
    Если на пальцах: всякий раз, когда ты делаешь await чтототам, выполнение асинхронной функции (вроде обработчика события) приостанавливается, и передаётся другой.
    А вот код в промежутке между await вызовами (ну или началом-концом функции) выполняется непрерывно, и занимает поток управления. Пока этот код выполняется, остальной бот стоит!
    Теперь посмотри что у тебя:
    while (True):
                user.balance += user.s9 * 30
                time.sleep(30)
                user.save()

    time.sleep() понятия не имеет про асинхронность, и не отдаёт управление другим асинхронным функциям. Поэтому пока она выполняется, остальной бот стоит.
    Да, даже для одного пользователя.

    Как минимум, нужно исправить две вещи.
    1. используй await asyncio.sleep() вместо time.sleep(). asyncio.sleep() знает про асинхронность, и приостановит функцию с передачей управления, т.е. бот сможет делать что-то ещё пока эта функция ждёт.
    2. while (True) - это не тру. Предусмотри код выхода из цикла! Или по максимальному числу итераций, или по команде, или по смене статуса пользователя... или по всему вышеперечисленному.
    Ответ написан
    Комментировать
  • Как создать универсальную функцию для "производства" массивов объектов?

    Vindicar
    @Vindicar
    RTFM!
    Что тут сказать, начинайте с азов ООП, потом с азов Питона!
    create(10,Test1_1())
    Вы передаёте в функцию create результат вызова класса Test1_1() - т.е. один его экземпляр. Если хотите передать сам класс, скобки нужно опустить:
    create(10,Test1_1)
    И тогда уже в функции будете делать вызов переданного класса, а точнее, любого вызываемого (callable) объекта-фабрики.
    Ответ написан
    Комментировать
  • Как запретить лайкать?

    Vindicar
    @Vindicar
    RTFM!
    База данных есть, я надеюсь?
    Лайк - это классическая связь многие-ко-многим между постами и юзерами.
    Т.е. помимо таблицы постов и таблицы юзеров делаешь связную таблицу из двух полей - id поста и id юзера. Если в ней есть запись - юзер лайкнул пост. Тогда можно
    а) проверять заранее, есть ли такая запись, и показывать "вы уже лайкнули"
    б) игнорировать повторные лайки, если они всё-таки придут. Просто сделай пару юзер-пост ключом
    в) как бонус - можно посчитать количество лайков посту и выбрать что лайкнул конкретный юзер.
    Ответ написан
    Комментировать
  • Как сделать так чтобы бот discord писал другому юзеру, когда он нажимает на реакцию?

    Vindicar
    @Vindicar
    RTFM!
    Судя по тегам discord и python, хотите использовать discord.py?
    В таком случае, нужно обрабатывать событие на простановку реакции, добыть id юзера, который её проставил, отправить сообщение этом юзеру по его id.

    Самые азы работы с библиотекой тут.
    Ответ написан
    Комментировать
  • Как запустить определенный код в другом потоке?

    Vindicar
    @Vindicar
    RTFM!
    Модуль threading в помощь.
    Кроме того, стоит запоминать, было ли найдено лицо на предыдущем кадре. Если на предыдущем не было, а на текущем есть, и если поток не активен, запускаем поток.
    Ответ написан
    Комментировать
  • Как найти несколько минимальных чисел в матрице?

    Vindicar
    @Vindicar
    RTFM!
    Легко. При обходе матрицы формируешь список индексов, где встречался минимум. Тогда:
    а) если число больше минимума, не делаем ничего
    б) если число равно минимуму, вносим его индексы в список
    в) если число меньше минимума, очищаем список. Потом вносим его индексы в список.
    Ответ написан
    Комментировать
  • Как можно обратиться к локальной переменной?

    Vindicar
    @Vindicar
    RTFM!
    Лучше так не делать от слова совсем.
    Либо пусть ваша функция возвращает это значение, либо сделайте её методом в классе, а локальную переменную замените на поле класса.
    Ответ написан
    Комментировать
  • Как можно заменить from module import * для однострочного кода Python?

    Vindicar
    @Vindicar
    RTFM!
    Открою страшную тайну:
    d = globals() # или locals() если нужна локальная область видимости
    d['x'] = 1
    print(x) #выведет 1


    Но зачем?
    Ответ написан
    5 комментариев
  • Как решить проблему динамического изменения данных во вложенном списке в python?

    Vindicar
    @Vindicar
    RTFM!
    a = []
    b = []
    b.append(a)
    b.append(a)
    a.append(1)
    print(b)
    #выведет [[1], [1]]

    Иными словами, список хранит не копию другого списка, а ссылку. Если вам нужна копия - сделайте её явно вызовом метода .copy() у списка.
    Ответ написан
    Комментировать
  • Что означает ошибка diskord.py?

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

    Vindicar
    @Vindicar
    RTFM!
    https://letmegooglethat.com/?q=python+make+directory
    Кроме шуток, ответ легко ищется поисковиком!
    В первой же паре строк будет os.mkdir() (для подкаталога в уже существующей директории) и os.makedirs() (для создания иерархии каталогов).
    Ответ написан
    Комментировать
  • Как исправить поворот массива numpy?

    Vindicar
    @Vindicar
    RTFM!
    метод reshape() возвращает версию массива с другими размерами, а не меняет эти размеры на месте.
    Так как вы игнорируете возвращаемое значение, вы пытаетесь повернуть одномерный вектор.
    Но там ещё будут проблемы с sorted(arr_b), так как sorted() интерпретирует двумерный массив как коллекцию одномерных, и пытается сортировать только эту коллекцию.
    Ответ написан
    Комментировать