ImportError:无法导入名称 QtGui
Posted
技术标签:
【中文标题】ImportError:无法导入名称 QtGui【英文标题】:ImportError: cannot import name QtGui 【发布时间】:2014-12-10 11:19:01 【问题描述】:我在我的 linux 32 位计算机上安装了 Qt5.3(32 位)安装程序。
然后我安装了最新版本的 sip - sip4.16.4
然后我从http://www.riverbankcomputing.co.uk/software/pyqt/download安装了最新版本的pyqt - PyQt-x11-gpl-4.11.3.tar.gz
在我的电脑上安装了python2.7和python3.2版本。当我尝试使用 python2.7 安装时,我遇到了一些错误。然后我尝试用 pthon3.2 安装它。没有发生错误,我使用python3.2正确安装了它
我安装了 py2.7-dev 和 py3.2-dev 包。
gdb,gcc,g++,python2.7,python3.2,build-essential all 都安装在我的电脑里了。
我从软件中心安装了 Qt Designer。
然后我按照教程的说明放置一个简单的按钮:http://www.youtube.com/watch?v=GLqrzLIIW2E
然后,我保存example.ui
然后,我在终端中输入以下命令: pyuic4 example.ui > example.py 。它将 .ui 文件转换为 .py 文件。然后我在上面提到的 youtube 教程中进行了必要的修改。
- 当我用 python3.2 运行 python 文件的最终版本时,它给出了错误:
Traceback (most recent call last):
File "outFile_ui.py", line 12, in <module>
from PyQt4 import QtCore, QtGui
ImportError: cannot import name QtGui
- 为什么我会出现这个错误?我认为问题出在不匹配的版本或安装等上。但我一次又一次地安装。不幸的是,什么都没有改变。我在网上搜索了有关该问题的所有信息。存在类似的问题,但没有一个对我有用。
如果你想查看我在终端上运行的 python 文件,它是:
from PyQt4 import QtCore, QtGui
import sys
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s
try:
_encoding = QtGui.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)
class Ui_Form(QtGui.QWidget):
def __init__(self):
QtGui.QWidget.__init__(self)
self.setupUi(self)
def setupUi(self, Form):
Form.setObjectName(_fromUtf8("Form"))
Form.resize(400, 300)
self.horizontalLayout = QtGui.QHBoxLayout(Form)
self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout"))
self.verticalLayout = QtGui.QVBoxLayout()
self.verticalLayout.setObjectName(_fromUtf8("verticalLayout"))
self.printHam_btn = QtGui.QPushButton(Form)
self.printHam_btn.setObjectName(_fromUtf8("printHam_btn"))
self.verticalLayout.addWidget(self.printHam_btn)
self.horizontalLayout.addLayout(self.verticalLayout)
self.retranslateUi(Form)
QtCore.QMetaObject.connectSlotsByName(Form)
def retranslateUi(self, Form):
Form.setWindowTitle(_translate("Form", "Super Ham", None))
self.printHam_btn.setText(_translate("Form", "Print HAm", None))
self.printHam_btn.clicked.connect(self.printHam)
def printHam(self):
print ("Ham!")
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
ex = Ui_Form()
ex.show()
sys.exit(app.exec_())
【问题讨论】:
似乎您可以将代码缩短为导入语句?您是否尝试在两个单独的行中导入 QtCore 和 QtGui? 你为什么不直接安装你的发行版(我假设是 ubuntu)提供的二进制包?您可能将 PyQt 安装到了错误的位置,现在正尝试使用错误的 Python 运行您的脚本。 @ekhumoro ,我同意你的看法。我认为问题与你提到的主题有关。但我无法解决。你说“你为什么不安装发行版提供的二进制包”是什么意思?你说的是软件中心之类的吗?我不明白 @oiyio。我的意思是 ubuntu 提供的 pre-compiled packages:即您通过 apt-get 安装的东西。 @ekhumoro。我没有这样做,因为这些软件包太旧了。 【参考方案1】:.ui转.py代码后,需要添加main函数。正确添加main函数后,完美运行。
【讨论】:
以上是关于ImportError:无法导入名称 QtGui的主要内容,如果未能解决你的问题,请参考以下文章
ImportError:无法导入名称“AFAVSignature”
ImportError:无法导入名称“评估”(来自意外导入评估)
Django 'ImportError: 无法导入名称 url'