pycharm использует pyside2 TypeError: объект ‘NoneType’ не вызывается

# -*- coding:utf-8 -*-
import sys
from PySide2.QtWidgets import QApplication, QLabel
print(sys.argv)
if __name__ == '__main__':
    dates = QApplication(sys.argv)
    label = QLabel('hello world')
    label.show()
    sys.exit(dates.exec_())

ОШИБКА

['E:/MayaTool/glTools/test.py']
Traceback (most recent call last):
  File "E:/MayaTool/glTools/test.py", line 6, in <module>
    dates = QApplication(sys.argv)
TypeError: 'NoneType' object is not callable

** Этот код работает на Python со своим собственным редактором, но он жалуется на Pycharm. В чем проблема? **

Вы говорите, что он запускается, когда вы дословно копируете и вставляете код в IDLE, но не в PyCharm?   —  person user12394740    schedule 19.11.2019

Какую конкретную версию pycharm вы используете? Попробуйте обновить до последней версии — или, если вы уже используете ее, попробуйте перейти на более раннюю версию — и проверьте, сохраняется ли проблема.   —  person user12394740    schedule 19.11.2019

См. также:  Прерывание клавиатуры в режиме отладки PyCharm
Понравилась статья? Поделиться с друзьями:
IT Шеф
Комментарии: 2
  1. user12394740

    Как видно здесь, инициализация класса QApplication принимает аргументы передается при запуске скрипта Python как sys.argv. Как вы и подозревали, при запуске в IDLE программе передаются аргументы, но когда в PyCharm не передаются (0) аргументы, sys.argv возвращает None. Инициализация QApplication пытается перебрать список аргументов, поскольку ожидает list строки (аргументов).

    Простое исправление — проверить, является ли sys.argv None, например

    # -*- coding:utf-8 -*-
    import sys
    from PySide2.QtWidgets import QApplication, QLabel
    print(sys.argv)
    if __name__ == '__main__':
        if sys.argv is None:
            sys.argv = []
        dates = QApplication(sys.argv)
        label = QLabel('hello world')
        label.show()
        sys.exit(dates.exec_())
    

    одна строка: QApplication(sys.argv or []) person user12394740; 19.11.2019

    Это не имеет никакого смысла. Почему sys.argv когда-либо было None? Значение всегда должно быть не ниже ['']. Также нет причин, по которым pyside / pyqt будет пытаться рассматривать переданный аргумент как вызываемый. Более вероятно, что это вызвано ошибкой в ​​pycharm — возможно, связанной с этой проблемой </ а>. person user12394740; 19.11.2019

    Чтобы быть ясным: выполнение QApplication(None) в PyQt5 или PySide2 не вызывает исключение, показанное в вопросе. person user12394740; 19.11.2019

  2. user12394740

    Вы, вероятно, добавили компиляцию кода MayaDevKit для PyMel, которая содержит замену PySide2 в вашу среду. Удаление должно решить вашу проблему.

    Я думаю, вы имеете в виду доработки кода. Была такая же проблема. Я добавил доработки maya devkit в пути интерпретатора. Поэтому при запуске его через PyCharm с интерпретатором mayapy.exe он использовал эти пути для поиска QApplication, который возвращает пустой класс. Как сказал Eoyilmaz, просто удалите его из путей интерпретатора, и это должно сработать. person user12394740; 28.09.2020

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: