【发布时间】: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。我没有这样做,因为这些软件包太旧了。