• Как переменной присвоить значения введённые в QLineEdit?

    @Sergey6661313
    #!/usr/bin/python3
    # -*- coding: utf-8 -*-
    
    # вообще достаточно просто преобразовывать текст в число и работать с ним:
    def prostoe_preobrazovanie_texta_v_chislo(text):
        try:                    # а вдруг там не число, а хрен пойми что?
            chislo = int(text)  # собственно вот нужная нам строчка...
            return chislo
        except Exception:
            return False
    
    # но иногда приходится выковыривать число из текста:
    def slojnoe_raspoznovanie_chisla(text):
        try:                    # а вдруг там число всё же где то есть?
            import re
            chislo = int(re.findall('(\d+)', text)[0])  # магия!
            return chislo
        except Exception:
            return False
    
    # ну и конечно обратное действие:
    def preobrazovanie_chisla_v_text(i):
        return str(i)
    
    
    
    # вообще для чисел был специально придуман QSpinBox и QDoubleSpinBox
    
    # но отвечая на Ваш вопрос мы всё же сделаем и вариант с QLineEdit
    from PyQt5.QtWidgets import (QWidget, QLabel, QLineEdit, QApplication, QPushButton, QBoxLayout, QDoubleSpinBox)
    from PyQt5.Qt import Qt
    
    class Example(QWidget):
        def __init__(self):
            super().__init__()
            self.initUI()
    
        def initUI(self):
            layout = QBoxLayout(QBoxLayout.Down, self)  # - это для компоновки
    
            self.qle = QLineEdit("", self)              # почему lbl в локальной видимости а qle нет?
            # self - тут очень важно иначе как вы будете обращятся к своему qle?
    
            self.qle.setPlaceholderText("Например: 56") #  - самая крутая killer фича...
            layout.addWidget(self.qle)                  #  - ну и отдаём его компоновщику...
    
            button = QPushButton("математика!")         #  - вы же хотели ещё и кнопку да?
            button.pressed.connect(self.my_super_puper_function)  # вот так соединяем нажатие с методом
            layout.addWidget(button)                    #  - уж попроще всяких button.move(60, 40)
    
            self.spinbox = QDoubleSpinBox()             #  - пример виджета который изначально под это заточен
            self.spinbox.setRange(0, 99999999)          # к сожелению по умолчанию там стоят жёсткие ограничения
            layout.addWidget(self.spinbox)
    
            self.lbl = QLabel("\n\n\n")                 #  - это ведь label - я угадал?
            layout.addWidget(self.lbl)
    
            self.setWindowTitle('Простой пример')
            self.show()
    
        def keyPressEvent(self, e):
            if e.key() == Qt.Key_Enter:
                self.my_super_puper_function()          # а что мешало прямо тут реализовывать математику?
                                                        # ну мы же ещё и кнопку хотим подключить на то же самое...
    
        def my_super_puper_function(self):              # та самя функция...
            # в большинстве случаев математика не работает потому что в qlineedit изначально распологаются не числа,
            # а текст. Ну и как вы к "абвгд" прибавите 10 ?
            # никак... сначало нам нужно убедится что там действительно число:
            i = self.proverki_na_chislo()               # вообщемто просто: я вынес всю магию в отдельный метод...
            # и этот метод возвращяет число именно числом а не текстом.
    
            if i:                                       # если там вообще число, тогда:
                self.matematika(i)                      #   математику в студию!
    
    
        def matematika(self, a):  #  я думаю в комментариях не нуждается...
            b = a * 7 * 1443      #  моя любимая математика: она утраивает двухзначное число :)
    
            # со spinbox-м просто:
            self.spinbox.setValue(b / 11111 * 12345 / 54321 * 5)  # будет работать, я гарантирую...
    
            # а вот для qlineedit тяжелее:
            b_text = preobrazovanie_chisla_v_text(b) # число нужно сначало сделать текстом.
            self.qle.setText(b_text)                 # и лишь потом выводить.
    
    
            #  ну и всякие смехуёчки..., куда же без них?
            if b < 10**10:
                self.lbl.setText("Конкретная математика - для реальныйх пацанов!")
            else:
                self.lbl.setText("ОЛОЛОЛО!!!!")
    
    
        # а этом вообщем то следовало бы остановится...
        # но мой qt вылетает без предупреждений если в lineEdit вписать хоть одну букву...
        # и тут меня понесло:
        def proverki_na_chislo(self):
            text = self.qle.text()
            if text != "":                                      # если наше поле не пустое
                i = prostoe_preobrazovanie_texta_v_chislo(text) #   пробуем простое преобразование
                if i:                                           #   ну и если удечно:
                    return i                                    #       выходим из этой функции уже с числом.
    
                i = slojnoe_raspoznovanie_chisla(text)          #   а если так и не вышли то пробуем более сложное.
                if i:
                    self.lbl.setText(text + " - разве это число?\n" + "тут конечно есть число: " + str(i) + "\nно я с ним ничего решать не буду!")
                    return i
    
                self.lbl.setText("Пожалуйста не материтесь...") # в противном случае скорее всего число вообще не написано:
                return False
            else:
                self.lbl.setText("нужно вписать число!")
                return False
    
    if __name__ == '__main__':
        import sys
        app = QApplication(sys.argv)
        ex = Example()
        ex.show()
        sys.exit(app.exec_())  # без этого ничего не запустится...
    
    
    # как то-так... ну вы держитесь там. Всего вам доброго!
    Ответ написан
    Комментировать
  • Как удалить сообщение бота с помощью aiogram?

    @alekssamos
    Программист любитель
    Всё должно удаляться, есть рабочий проект.
    Возможно прав администратора в группе нет?
    Вот пример:
    import asyncio
    from contextlib import suppress
    
    from aiogram import types
    from aiogram.utils.exceptions import (MessageToEditNotFound, MessageCantBeEdited, MessageCantBeDeleted,
                                          MessageToDeleteNotFound)
    
    async def delete_message(message: types.Message, sleep_time: int = 0):
        await asyncio.sleep(sleep_time)
        with suppress(MessageCantBeDeleted, MessageToDeleteNotFound):
            await message.delete()

    ...
    msg = await message.reply("Я удалюсь через 30 секунд")
        asyncio.create_task(delete_message(msg, 30))
    Ответ написан
  • Авторизация requests post python, получаю пустые данные?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    значить, сюда слюшай

    первый действие для любого сайта учишь, да?

    статью читаешь, по статье делаешь, да?
    Ответ написан
    Комментировать