PyQt4报错NameError: 'QtGui'未定义,已用指定导入仍有问题求排查
解决PyQt4中
NameError: name 'QtGui' is not defined的问题 嘿,这个问题我太熟啦!你踩的是个很典型的命名空间小坑~
错误原因
你虽然通过from PyQt4.QtGui import QMainWindow, ...这种方式导入了具体的类,但你的代码里却在试图用QtGui.QMainWindow来引用类——可你根本没导入QtGui这个模块本身啊!当前命名空间里只有你明确导入的那些类(比如QMainWindow),没有QtGui这个模块对象,自然会报找不到名字的错误。
看你代码里的这行:
class Window(QtGui.QMainWindow):
这就是问题核心,你已经把QMainWindow直接导入到当前环境了,却还在加QtGui.前缀。
两种解决办法
办法一:直接使用导入的类名(推荐,贴合你当前的导入习惯)
既然已经导入了QMainWindow,直接用类名就行,把类定义改成:
class Window(QMainWindow):
同理,如果你后面代码里还有QtGui.XXX的调用,只要你已经通过from PyQt4.QtGui import XXX导入了对应的类,都可以直接去掉QtGui.前缀,用XXX就行。
办法二:导入QtGui模块本身
如果你的代码里需要频繁使用QtGui模块下的各种内容,也可以改成导入整个模块:
import sys from PyQt4 import QtGui from PyQt4.QtCore import SIGNAL, QSettings, QSize, QPoint, QVariant, QFileInfo, QTimer, pyqtSignal, QObject
这样后面再写QtGui.QMainWindow就不会报错了,当然这种情况下你之前导入的那些具体类也可以保留,不会冲突。
内容的提问来源于stack exchange,提问作者Aquarius_Girl
相关产品推荐
相关产品推荐

