# -*- 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
Как видно здесь, инициализация класса
QApplication
принимает аргументы передается при запуске скрипта Python какsys.argv
. Как вы и подозревали, при запуске в IDLE программе передаются аргументы, но когда в PyCharm не передаются (0) аргументы,sys.argv
возвращаетNone
. ИнициализацияQApplication
пытается перебрать список аргументов, поскольку ожидаетlist
строки (аргументов).Простое исправление — проверить, является ли
sys.argv
None
, напримеродна строка:
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Вы, вероятно, добавили компиляцию кода MayaDevKit для PyMel, которая содержит замену PySide2 в вашу среду. Удаление должно решить вашу проблему.
Я думаю, вы имеете в виду доработки кода. Была такая же проблема. Я добавил доработки maya devkit в пути интерпретатора. Поэтому при запуске его через PyCharm с интерпретатором mayapy.exe он использовал эти пути для поиска QApplication, который возвращает пустой класс. Как сказал Eoyilmaz, просто удалите его из путей интерпретатора, и это должно сработать. — person user12394740; 28.09.2020