Задать вопрос
  • Как связать код Python и GUI на wxPython?

    @dim5x
    ЗИ, ИБ. Помогли? Поблагодарите. Отметьте ответом.
    6717cf333e689297739155.png
    Код
    import wx
    
    class MyFrame(wx.Frame):
        def __init__(self, *args, **kwds):
            kwds["style"] = kwds.get("style", 0) | wx.DEFAULT_FRAME_STYLE
            wx.Frame.__init__(self, *args, **kwds)
            self.SetSize((250, 250))
            self.SetTitle("frame")
    
            sizer_1 = wx.WrapSizer(wx.VERTICAL)
    
            fields = [
                ("Ширина (м)", "a"),
                ("Длина (м)", "b"),
                ("Высота (м)", "h"),
                ("Окно ширина (м)", "o1"),
                ("Окно высота (м)", "o2"),
                ("Дверь ширина (м)", "d1"),
                ("Дверь высота (м)", "d2"),
            ]
    
            # Create grid sizers and controls dynamically
            for label_text, attr in fields:
                grid_sizer = wx.GridSizer(1, 2, 0, 0)
                sizer_1.Add(grid_sizer, 1, wx.EXPAND, 0)
    
                label = wx.StaticText(self, wx.ID_ANY, label_text)
                grid_sizer.Add(label, 0, wx.ALL, 1)
    
                text_ctrl = wx.TextCtrl(self, wx.ID_ANY, "")
                setattr(self, attr, text_ctrl)  # Store the text control in the instance
                grid_sizer.Add(text_ctrl, 0, 0, 0)
    
            # Create a horizontal sizer for the result and button
            h_sizer = wx.BoxSizer(wx.HORIZONTAL)
    
            # Result text control
            self.itogo = wx.TextCtrl(self, wx.ID_ANY, "")
            self.itogo.SetBackgroundColour((171, 171, 171))
            h_sizer.Add(self.itogo, 1, wx.EXPAND | wx.ALL, 5)
    
            # Calculate button
            self.button_1 = wx.Button(self, wx.ID_ANY, "Посчитать", size=(110, 21))
            h_sizer.Add(self.button_1, 0, wx.ALL, 5)
            self.button_1.Bind(wx.EVT_BUTTON, self.onclick)
    
            # Add the horizontal sizer to the main sizer
            sizer_1.Add(h_sizer, 0, wx.EXPAND, 0)
    
            self.SetSizer(sizer_1)
            self.Layout()
    
        def onclick(self, event):
            a = float(self.a.GetValue())
            b = float(self.b.GetValue())
            h = float(self.h.GetValue())
            o1 = float(self.o1.GetValue())
            o2 = float(self.o2.GetValue())
            d1 = float(self.d1.GetValue())
            d2 = float(self.d2.GetValue())
    
            result = round(a * 2 * h + b * 2 * h - o1 * o2 - d1 * d2, 2)
            self.itogo.SetValue(str(result))
    
    class MyApp(wx.App):
        def OnInit(self):
            self.frame = MyFrame(None, wx.ID_ANY, "")
            self.SetTopWindow(self.frame)
            self.frame.Show()
            return True
    
    
    if __name__ == "__main__":
        app = MyApp(0)
        app.MainLoop()
    Ответ написан
    1 комментарий
  • Как в tk.Label отобразить содержимое двух списков один над другим?

    @dim5x
    ЗИ, ИБ. Помогли? Поблагодарите. Отметьте ответом.
    Речь про Tkinter?
    Если я правильно понял то, что вы хотите:
    l = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
    label_text = '\n'.join(' '.join(map(str, sublist)) for sublist in l)
    label = tk.Label(text=label_text)
    Ответ написан
  • Почему pypsexec не выводит приложение на экран?

    @dim5x
    ЗИ, ИБ. Помогли? Поблагодарите. Отметьте ответом.
    1. Используйте r перед ф-строкой во избежание нескольких invalid escape sequence:
    command = rf'C:\PsTools\psexec.exe -i 1 -s \\192.168.11.18 -u user -p password calc.exe'

    У меня код с subprocess отрабатывает корректно:
    import subprocess
    
    
    def f():
        command = rf'C:\Portable\Sysinternal\PsExec.exe -i 1 -s \\192.168.0.3 -u user -p password calc.exe'
        return subprocess.call(command, stdout=subprocess.DEVNULL)


    2. Вариант с pypsexec у меня отрабатывает некорректно - GUI запускается, но с артефактами.
    Помимо interactive=True, надо указать номер сессии (можно узнать через cmd -> query user), например: interactive_session=1. Это аналог -i 1 в psexec.

    c.run_executable (executable: "cmd.exe", arguments=r"/c start calc.exe", interactive=True, interactive_session=1)
    Ответ написан
    Комментировать
  • Я учу питон, и в данный момент я пытаюсь сделать калькулятор который проверяет данные которые вводит пользователь?

    @dim5x
    ЗИ, ИБ. Помогли? Поблагодарите. Отметьте ответом.
    С одним циклом:
    num_1 = None
    num_2 = None
    effect = None
    
    while True:
        if num_1 is None:
            input_value = input("Введите первое число: ")
            if input_value.isdigit():
                num_1 = int(input_value)
            else:
                print('Вы ввели не число!')
                continue
    
        if num_2 is None:
            input_value = input("Введите второе число: ")
            if input_value.isdigit():
                num_2 = int(input_value)
            else:
                print('Вы ввели не число!')
                continue
    
        if effect is None:
            input_value = input(
                "Напишите что вы хотите сделать (отнять, прибавить, умножить, разделить, возвести в степень, целое деление, остаток от деления): ")
            if input_value in ("+", "-", "*", "/", "**", "//", "%"):
                effect = input_value
                break
            else:
                print('Нету такого действия!')
                continue
    
    # Выполнение операции
    if effect == "+":
        print(num_1 + num_2)
    elif effect == "-":
        print(num_1 - num_2)
    elif effect == "*":
        print(num_1 * num_2)
    elif effect == "/":
        print(num_1 / num_2)
    elif effect == "**":
        print(num_1 ** num_2)
    elif effect == "//":
        print(num_1 // num_2)
    elif effect == "%":
        print(num_1 % num_2)
    Ответ написан
    Комментировать
  • Какое исправление кода помогает на библиотеке disnake для команды translate?

    @dim5x
    ЗИ, ИБ. Помогли? Поблагодарите. Отметьте ответом.
    Используйте версию googletrans==4.0.0rc1. Как я понял, в 3.0.0. больше не работает получение токена от Google Translate из-за чего перевод не осуществляется.
    67158d6c97f62379401811.png
    Ответ написан
    Комментировать
  • AttributeError: 'str' object has no attribute 'send' как отправлять юзеру в лс сообщение по ид?

    @dim5x
    ЗИ, ИБ. Помогли? Поблагодарите. Отметьте ответом.
    Очевидно потому что config.getint("User", "id") возвращает тип int, а у данного типа нет метода (атрибута) 'send'.
    Следовательно user_id.send("Ваша заявка была одобрена") вызовет ошибку выше.

    Отправлять как-нибудь так:
    user = await bot.fetch_user(user_id: int) 
    await user.send(message)
    Ответ написан
    Комментировать
  • Переменные на кирилице?

    @dim5x
    ЗИ, ИБ. Помогли? Поблагодарите. Отметьте ответом.
    Никак не влияет.
    Нравится, удобно - пишите. Особенно, если не планируете что ваш код будут использовать/поддерживать иностранцы.
    Ответ написан
    3 комментария
  • Как подключить видеокарту?

    @dim5x
    ЗИ, ИБ. Помогли? Поблагодарите. Отметьте ответом.
    1. Поставить CUDA.
    2. Проверить:
    import torch
    torch.cuda.is_available()

    3. Перенести модель на GPU:
    device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
    print(device)
    model = MyModel(args)
    model.to(device)


    От IDE не зависит. Torch Start Locally.
    Ответ написан
    Комментировать
  • Почему в данном примере запуска потока с переданным аргументом, есть разница между способом передачи аргумента?

    @dim5x
    ЗИ, ИБ. Помогли? Поблагодарите. Отметьте ответом.
    В любом замыкании в Python переменные связываются по имени.
    l = []
    for i in range(3):
        l.append(lambda: i)
    print([f() for f in l])
    >>> [2, 2, 2]


    Выход из ситуации — создание отдельной функции или передача аргументов по их имени:
    l = []
    for i in range(3):
        l.append(lambda i = i : i)
    print([f() for f in l])
    >>> [0, 1, 2]


    Т.е. это не вопрос в потоках.
    Ответ написан
    Комментировать
  • Как решить проблему с терминалом PyCharm?

    @dim5x
    ЗИ, ИБ. Помогли? Поблагодарите. Отметьте ответом.
    1. Не использовать пробелы в пути.
    2. Или заключить путь c пробелами в двойные кавычки.
    Ответ написан
    Комментировать
  • Как Notepad++ запустить 2 блокнота окнами?

    @dim5x
    ЗИ, ИБ. Помогли? Поблагодарите. Отметьте ответом.
    Правой кнопкой по заголовку вкладки -> Открыть в новом экземпляре.
    Ответ написан
    6 комментариев
  • Почему не находит картинку pyautogui?

    @dim5x
    ЗИ, ИБ. Помогли? Поблагодарите. Отметьте ответом.
    Запускать как-нибудь так?
    while True:
        try:
            x = pa.locateCenterOnScreen(r"C:\Python Scripts\library\proga.png", confidence=0.5)
            print(x)
        except Exception as e:
            print(e)

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

    @dim5x
    ЗИ, ИБ. Помогли? Поблагодарите. Отметьте ответом.
    for i in read:
        print(i['title'])
        user_answer = input('Это нужное объявление? (y/n) ')  # получаем ответ пользователя 
        if user_answer == 'y':
            ...
        else:
            ...
    Ответ написан
  • Почему не работает код?

    @dim5x
    ЗИ, ИБ. Помогли? Поблагодарите. Отметьте ответом.
    Потому что len_pass_numbers.lower() (и прочие) возвращает вам строку 'да', а вы сравниваете с 'Да'.
    Соответственно ваш "алфавит" - chars - пустой.

    Ну и, вероятно, удобнее пользоваться встроенными коллекциями, чем вручную набивать:
    from string import digits, ascii_lowercase, ascii_uppercase, punctuation
    Ответ написан
    3 комментария
  • Не могу получать ответ в авторизации через python?

    @dim5x
    ЗИ, ИБ. Помогли? Поблагодарите. Отметьте ответом.
    У меня работает так:
    1. Авторизация:
    import requests
    
    url = 'https://texttospeech.ru/api/v1/login'
    
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:123.0) Gecko/20100101 Firefox/123.0',
        'Content-Type': 'text/plain;charset=UTF-8',
    }
    
    data = {"email": "sample@email.com", "pass": "password", "captcha": ""}
    
    session = requests.Session()
    response = session.post(url, json=data)
    
    print(response.text)

    65ee54c4e9c13651933899.png

    2. Код для генерации mp3 из текста:
    import requests
    
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:123.0) Gecko/20100101 Firefox/123.0',
        'Content-Type': 'text/plain;charset=UTF-8',
    }
    
    
    def get_token() -> str:
        url = 'https://texttospeech.ru/api/v1/login'
        data = {"email": "sample@email.com", "pass": "password", "captcha": ""}
        with requests.Session() as session:
            response = session.post(url, headers=headers, json=data)
            token = response.json().get('data').get('token')
            return token
    
    
    headers['token'] = get_token()
    
    
    def synthesize(text: str) -> None:
        url = 'https://texttospeech.ru/api/v1/synthesize'
        data = {"rate": "0", "pitch": "0", "volume": "0", "hertz": "0", "shift": "0", "echo": "0",
                "text": f'{text}',
                "code": "ru-RU009",
                "format": "mp3"}
        with requests.Session() as session:
            response = session.post(url, headers=headers, json=data)
            if response.status_code == 200:
                print(response.json().get('message'))
                filelink = response.json().get('data').get('filelink')
                with open(f'{text[0:10]}.mp3', 'wb') as file:
                    response = session.get(f'https://texttospeech.ru/{filelink}', headers=headers)
                    file.write(response.content)
            else:
                print(response.text)
    
    
    synthesize('Привет мир')
    Ответ написан
  • Как узнать дату регистрации какого-либо аккаунта в вк с помощью питона?

    @dim5x
    ЗИ, ИБ. Помогли? Поблагодарите. Отметьте ответом.
    Так?
    import requests
    
    
    def parse(vk_id: int) -> str:
        url = f'https://vk.com/foaf.php?id={vk_id}'
        r = requests.get(url)
        for line in r.text.split('\n'):
            if 'ya:created' in line:
                return line.split('=')[1]
        else:
            return 'Not found.'
    
    
    print(parse(1))
    Ответ написан
  • Как составить формулу, случайно выбирающую ячейку из диапазона и возвращающую ее значение, но при условии, что это значение больше 0?

    @dim5x
    ЗИ, ИБ. Помогли? Поблагодарите. Отметьте ответом.
    Так?
    =ArrayFormula(INDEX(FILTER(F13:J13; F13:J13<>""); RANDBETWEEN(1;COUNTA(F13:J13))))
    Ответ написан
    1 комментарий
  • Ошибка в коде как исправить?

    @dim5x
    ЗИ, ИБ. Помогли? Поблагодарите. Отметьте ответом.
    По первой: on_component - это не атрибут бота, а внутреннее событие.
    Писать надо как-то так:
    # Обработчик нажатия на кнопку присоединения к игре
    @bot.event
    async def on_component(interaction):
        global players
        if interaction.author not in players:
            players[interaction.author] = None
            await interaction.response.send_message(content=f"{interaction.author.mention} присоединился к игре!",
                                                    ephemeral=True)
        else:
            await interaction.response.send_message(content="Вы уже присоединились к игре!", ephemeral=True)

    По второй: intents = disnake.Intents.all()

    65ea40dbe196f490077828.png

    З.Ы. И, может быть, лучше делать на слэш командах? - чтобы пользователям не нужно было прописывать их текстом и помнить их формат, а просто тыкать мышой.
    Ответ написан
    Комментировать
  • Почему google colab завершает работу скрипта?

    @dim5x
    ЗИ, ИБ. Помогли? Поблагодарите. Отметьте ответом.
    Добавить while True: pass?

    ...
    for i in range(5):
        threading.Thread(target=write).start()
        
    while True:
        pass


    65e9ecc1f3807573089137.png
    Ответ написан