我正在尝试在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_())
提前致谢。
答案 0 :(得分:0)
如果我错过了重点,请原谅我,但我不明白为什么MyApp
继承了QtGui.QMainWindow
和Ui_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)。
祝你好运,解决这个问题。