NameError: имя «QtGui» не определено

Когда я пытаюсь запустить этот код, он показывает ошибку: NameError: name 'QtGui' is not defined. Что не так с моим приложением?

Код:

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_())

Сделал все как в примере, но все равно выдает ошибку.


person Mr.Tigr    schedule 29.08.2015    source источник
comment
Ваш импорт неверен. См. непринятый ответ import PyQt4 делает не включать PyQt4.QtCore или QtGui   -  person Mel    schedule 30.08.2015
comment
@тморо. Этот ответ конкретно касается вопроса о том, как импортировать все в PyQt. Но это не то, что здесь нужно. OP должен заменить все строки импорта (кроме import sys) на from PyQt4 import QtCore, QtGui, а затем просто изменить определение класса на class WindowHello(QtGui.QWidget):. После этого скрипт будет работать так, как ожидалось.   -  person ekhumoro    schedule 30.08.2015
comment
Вот почему я специально сослался на непринятый ответ, в котором говорится, что не используйте импорт *, пространства имен существуют по уважительной причине. Но да, возможно, есть лучший дубликат, чем этот вопрос.   -  person Mel    schedule 30.08.2015


Ответы (1)


Попробуйте следующий код, который я предоставил, вы пытаетесь создать экземпляр QtGui, QtCore, которые содержат все типы виджетов/библиотек, поэтому вы не можете их все экземпляры, вам нужно быть конкретным вместо этого используйте, например: 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_())
person Community    schedule 30.08.2015
comment
Не рекомендуется использовать import *, а строка from PyQt4 import * бесполезна. - person Mel; 30.08.2015
comment
from PyQt4 import * , да, я скучаю по этому, ну ... это не мой код, относительно использования import * не рекомендуется использовать import * да, я знаю, просто импортируйте то, что вам нужно ... - person ; 30.08.2015