Ответы пользователя по тегу PyCharm
  • Как убрать подчёркивание некоторых названий в PyCharm?

    @bbkmzzzz
    где продолжение? IDE вполне закономерно ругается на некорректный синтаксис и другие ошибки, это одна из её функций. Завершите синтаксическую конструкцию, подчеркивание пропадет
    def F(n):
        pass

    P.S. Имена функциям\методам принято давать с маленькой буквы, разделяя слова подстрочным тире, имена классов - CamelCase
    Ответ написан
    1 комментарий
  • Как добиться видимости объектов созданных в формах 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 комментарий
  • Как в PyCharm сделать Type Hinting классов?

    @bbkmzzzz
    если я правильно понял, что имеется в виду. Вот тут тоже можно почитать
    def some_func(SomeClass: Base):
    либо
    def some_func(SomeClass):
            """
    
            :type SomeClass: Base
            """

    доки
    Можно установить модуль Jedi (если не установлен), описание на хабре
    Ответ написан
    9 комментариев
  • Ошибка в PyCharm, не запускает бота, что делать?

    @bbkmzzzz
    bot.message_handler(content_types=['text'])

    если у вас файл скрипта имеет имя bot.py - переименуйте, не должно быть конфликта имен
    Ответ написан
    Комментировать
  • Не работает консоль в PyCharm?

    @bbkmzzzz
    Ответ написан
    Комментировать