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:无法导入名称“WebClient”

ImportError:无法导入名称“AFAVSignature”

ImportError:无法导入名称“评估”(来自意外导入评估)

Django 'ImportError: 无法导入名称 url'

ImportError:导入 PCA 时无法导入名称“LatentDirichletAllocation”[关闭]

如何修复“ImportError:无法导入名称'StringIO'”