Контакты

Достижения

Все достижения (4)

Наибольший вклад в теги

Все теги (25)

Лучшие ответы пользователя

Все ответы (191)
  • Python, ошибка при работе с Sqlite ( Incorrect number of bindings supplied...)?

    @bbkmzzzz
    execute принимает в качестве параметров кортеж. Запятая нужна после data
    cursor.execute("INSERT INTO table_name (abcd) VALUES(?)", (data,))
    Ответ написан
    1 комментарий
  • Сложить значения одинаковых ключей множества словарей объеденённых списком?

    @bbkmzzzz
    Если без подключения модуля, то можно так:
    a = (
          {'Петя': 6, 'Вася': 8, 'Дима': 11, 'Юля': 3},
          {'Петя': 5, 'Вася': 36, 'Дима': 4, 'Юля': 8},
          {'Петя': 54, 'Вася': 21, 'Дима': 22, 'Юля': 39},
          {'Петя': 61, 'Вася': 48, 'Дима': 71, 'Юля': 73}
        )
    
    resultdict = {}                                            #  результирующий словарь
    
    for dictionary in a:                                     # пробегаем по списку словарей
      for key in dictionary:                               # пробегаем по ключам словаря
        try:
          resultdict[key] += dictionary[key]        # складываем значения
        except KeyError:                                    # если ключа еще нет - создаем
          resultdict[key] = dictionary[key]   
    
    print(resultdict)
    Ответ написан
    Комментировать
  • Ввожу 8 9 10 min() выбирает 9 max() 10. max - min = -1. Как так?

    @bbkmzzzz
    Потому что нужно почитать документацию на функцию max
    Если max\min передать строки - он найдет строку(!) подходящую лексиграфически, то есть в алфавитном порядке.
    Строка '10' < '9', так как 1 идет раньше 9.

    Не надо переопределять встроенные имена. Считайте их зарезервированными и недоступными для именования переменных
    max = max(s)
    min = min(s)
    Ответ написан
    Комментировать
  • Как добиться видимости объектов созданных в формах Qt Designer при разработке кода в PyCharm?

    @bbkmzzzz
    Заведите в классе отдельное поле для форм, будет удобнее.
    import labaa2
    
    class Laba2(QMainWindow):
        def __init__(self):
            super().__init__()
            self.ui = self.setupUi(self)


    Тогда вся форма будет в ui
    self.ui.button # например

    Дело в том, что QtDesigner создает файлы в "своем формате" (xml, если правильно помню), попробуйте открыть ui файл блокнотом, увидите. Питон ни сном ни духом, что там такое находится и как с этим взаимодействовать, вот тут на сцену и выходит uic. Он преобразует дерево виджетов ui в валидный питоновский класс, который использует установленную питоновскую библиотеку-обертку над Qt.
    С uic 2 подхода:
    1. uic.loadUi('TEST.ui', self)
    (есть смысл запихнуть это в отдельное поле класса, например, self.ui = uic.loadUi('TEST.ui', self), дабы не возникло не нужных пересечений имен, да и, на мой взгляд, аккуратнее получиться, мало ли еще одну форму в этот же класс грузить будете.)
    uic парсит ui файл, и создает сущности. Каждый раз, при запуске программы это будет происходить.
    + Не требует промежуточных звеньев
    - Не работает автодополнение IDE
    - Парсинг и формирование питон класса при каждом запуске.
    2. Конвертация заранее.
    - Требует промежуточное действие между формой и программой. (преобразование в ui в py)
    + Работает автодополнение
    + Не тратится время на преобразование при запуске программы.
    + В PyCharm можно настроить конвертацию на горячую клавишу.

    Не надо наследовать класс сразу от двух классов, в 99.9% Вам это не надо, а странных для вас эффектов можете огрести.
    С использованием предварительной конвертации
    Импортируйте сконвертированную форму в самом начале, дайте ей понятное название, потом подключите
    import labaa2
    from labaa2.Ui_Laba2 import Ui_что_там_у_вас as MainForm_UI
    
    class Laba2(QMainWindow,):
        def __init__(self):
            super().__init__()
            self.ui = MainFormUI()
            self.ui.setupUi(self)

    теперь вся форма будет в ui, автодополнение работает, Pycharm скорее всего не увидит сигналов, но это нормально, работать они, естественно, будут.

    P.S. Pycharm и External tools
    Картинки

    5f8caa995f6ff805437661.png
    5f8cad28bb2ce085833759.png
    Для такой организации формочек
    5f8cadf60e0e2969686885.png
    Правой кнопкой по файлу - то, как Вы назовете external tool.
    5f8caefc48637441580438.png
    # импорт
    import labaa2
    from forms.py.temp_ui import Ui_MainWindow as MainForm
    
    
    class Laba2(QMainWindow,):
        def __init__(self):
            super().__init__()
            self.ui = MainForm()
            self.ui.setupUi(self)


    Добавление хоткея
    5f8cafbe07d7f009801572.png
    Ответ написан
    1 комментарий
  • В чём преимущество assert перед циклом if-else?

    @bbkmzzzz
    assert - только для отладки. Он не заменяtт ничего, если запустить интерпретатор с флагом -о, - assert вообще игнорируется. Так что не стоит использовать его ни для чего, кроме целей отладки. Он не заменит ни циклы, ни if-else
    Ответ написан
    2 комментария