2015-08-29 163 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