2015-08-29 1 views
0

Когда я пытаюсь запустить этот код, отображается ошибка: NameError: name 'QtGui' is not defined. Что случилось с моим приложением?NameError: name '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 должен заменить все строки импорта (помимо 'import sys') на' from PyQt4 import QtCore, QtGui', а затем просто изменить определение класса на 'class WindowHello (QtGui.QWidget):'. Сценарий будет работать так, как ожидалось. – ekhumoro

+0

Вот почему я специально упомянул не принятый ответ, в котором говорится: «Не используйте import *, пространства имен существуют по уважительной причине». Но да, возможно, лучший дубликат, чем этот вопрос. – Mel

ответ

0

Попробуйте следующий код, который я обеспечиваю, вы пытаетесь, например QtGui, QtCore, которые содержат все типы виджетов/LIB, так что вы можете не экземпляр их все, вы должны быть конкретны, а не, например: QWidget, QDialog, QMainWindow

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 *', и строка 'from PyQt4 import *' бесполезна – Mel

+0

от импорта PyQt4 *, да, я пропустил это, ну ... не мой код, в отношении «Это нехорошая практика использовать импорт * «да, я знаю, просто импортируйте то, что вам нужно ... – 3DSC