'module'对象没有属性'qmainwindow'

时间:2015-04-27 06:27:45

标签: python python-2.7 pyqt4 attributeerror

我正在尝试在centos上使用PyQt4创建UI。但是当我试图加载QtGui.QMainWindow时,我收到错误:

Traceback(most recent call last):
   File "test.py", line 7, in <module>
    Ui_MainWindow, QtBaseClass = uic.loadUiType(ui_file_path)
   File "/usr/local/lib/python2.7/site-packages/PyQt4/uic/__init__.py", line 160, inloadUiType
return (ui_globals[winfo["uiclass"]],getattr(Qtgui, winfo["baseclass"]))
AttributeError:'module' object has no attribute 'qmainwindow'

这是我的代码,我使用的是python 2.7.9:

import sys
import os
from PyQt4 import QtCore, QtGui, uic

ui_file_path = os.getcwd()+"/test.ui" # Enter file here.

Ui_MainWindow, QtBaseClass = uic.loadUiType(ui_file_path)

class MyApp(QtGui.QMainWindow, Ui_MainWindow):
    def __init__(self):
        QtGui.QMainWindow.__init__(self)
        Ui_MainWindow.__init__(self)
        self.setupUi(self)

if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    window = MyApp()
    window.show()
    sys.exit(app.exec_())

提前致谢。

2 个答案:

答案 0 :(得分:0)

如果我错过了重点,请原谅我,但我不明白为什么MyApp继承了QtGui.QMainWindowUi_MainWindow

这样的事情对你有用吗?

import sys
import os
from PyQt4 import QtGui, uic

ui_file_path = os.path.join(os.getcwd(), "test.ui") # Enter file here.

class MyApp(QtGui.QMainWindow):
    def __init__(self):

        # Parent class init
        QtGui.QMainWindow.__init__(self) 
        # You may also write
        # super(MyApp, self).__init__()

        # Load UI
        uic.loadUi(ui_file_path, self)

if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    window = MyApp()
    window.show()
    sys.exit(app.exec_())

修改

这里似乎有一个案例问题。

在我的Python解释器中,我得到了这个:

import os

os.PAth 
# This prints: AttributeError: 'module' object has no attribute 'PAth'

os.path
# This works

在您的情况下,您输入正确的大小写,但在错误消息中以不正确的大小写出现错误:

class Myapp(QtGui.QMainWindow)
# AttributeError:'module' object has no attribute 'qmainwindow'

好像在文本编辑器和解释器之间的某处,某些东西降低了QMainWindow的大小写。我没有任何关于为什么会发生这种情况的假设,但它可能嵌套在一个不明显的地方。

你能在翻译中复制吗?更明确地说,你可以在同一台机器上运行Python解释器并试试这个:

import PyQt4.QtGui
PyQt4.QtGui.QMainWindow
import os
os.PAth 

看看你得到了什么错误?

(注意:在下面的评论中,QtGui.QMainWindow中有一个大小写错误(你写了QtGui.QMainWIndow)。我想你是在写评论的时候做的,而不是代码。)

答案 1 :(得分:0)

我在使用PyQt5和python3的Ubuntu 16.04上遇到了同样的问题。这也适用于PyQt4,为什么不试一试?

我从http://pyqt.sourceforge.net/Docs/PyQt5/pyqt4_differences.html找到了将QtGui.QMainWindow改为QtWidget.QMainWindow的解决方案,因为它们已经改变了。这也需要应用于QApplication,并且代码中不需要导入QtGui(替换为import ...,QtWidget)。

祝你好运,解决这个问题。