ImportError:无法导入名称QtGui

时间:2014-12-10 11:19:01

标签: python linux qt pyqt

我在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_())
    

1 个答案:

答案 0 :(得分:1)

将.ui转换为.py代码后,需要添加一个main函数。正确添加主要功能后,它会完美运行。