2015-08-29 120 views
0

当我尝试运行此代码时,显示错误:NameError: name 'QtGui' is not defined。我的应用有什么问题?NameError:名称'QtGui'未定义

代码:

import sys 
from tkinter import * 
from PyQt4 import * 
from PyQt4.QtGui import * 
from PyQt4.QtCore import * 

class WindowHello(QtGui, QWidget, QtCore): 
    def __init__(self, parent = None): 
     QtGui.QWidget.__init__(self, parent) 

     self.setGeometry(650, 450, 450, 380) 
     self.label = QtGui.QLabel("<center>Hello!<center>") 
     self.box = QtGui.QVBoxLayout() 
     self.box.addWidget(self.label) 
     self.setLayout(self.box) 

app = QtGui.QApplication(sys.argv) 

op = WindowHello() 
op.setWindowTitle('LangTIME') 
op.setWindowIcon(QtGui.QIcon('Minilogowin.png')) 
op.show() 

sys.exit(app.exec_()) 

我做这一切的例子一样,但它毕竟是示值误差。

+1

你导入wrong.See的不接受的答案[进口PyQt4中不包括PyQt4.QtCore或QtGui(http://stackoverflow.com/questions/ 21323899 /进口PyQt4的 - 不 - 不inclu de-pyqt4-qtcore-or-qtgui) – Mel

+0

@tmoreau。该答案专门处理如何在PyQt中“导入所有内容”的问题。但这不是这里需要的。 OP应该用'从PyQt4导入QtCore,QtGui'替换所有导入行(除'import sys'外),然后将类定义更改为'class WindowHello(QtGui.QWidget):'。该脚本将按预期工作。 – ekhumoro

+0

这就是为什么我特别提到未接受的答案,其中指出“不要使用导入*,名称空间存在的原因很有好处”。但是,是的,也许有比这个问题更好的重复。 – Mel

回答

0

尝试下面的代码,我提供,你试图实例QtGuiQtCore,其中包含所有类型的部件/ lib中,所以你不能如他们,你需要具体的,可以使用,而不是如:QWidget的了QDialogQMainWindow的

import sys 
#from tkinter import * 
#from PyQt4 import * 
from PyQt4.QtGui import * 
from PyQt4.QtCore import * 

class WindowHello(QWidget): 
    def __init__(self, parent = None): 
     QWidget.__init__(self, parent) 

     self.setGeometry(650, 450, 450, 380) 
     self.label = QLabel("<center>Hello!<center>") 
     self.box = QVBoxLayout() 
     self.box.addWidget(self.label) 
     self.setLayout(self.box) 



app = QApplication(sys.argv) 

op = WindowHello() 
op.setWindowTitle('LangTIME') 
#op.setWindowIcon(QtGui.QIcon('Minilogowin.png')) 
op.show() 

sys.exit(app.exec_()) 
+0

不好的做法是使用'import *',并且PyQt4 import *'中的行''是没用的 – Mel

+0

from PyQt4 import *,是的,我很想念那个,那么...不是我的代码,关于“使用导入*“是的,我知道,只需导入你所需要的... – 3DSC