2017-02-10 13 views
0

Я пытаюсь найти, почему это дает мне NameError .... Имя класса App(QDialog): - это тот, у кого есть ошибка. Я следил точно за видео на YouTube, а его код работает, а мой нет. Пожалуйста, помогите мне в этом. Спасибо :)Pyqt5 NameError

import sys 
from PyQt5.QtWidgets import QApplication, QWidget, QMainWindow, QPushButton, QMessageBox, QBoxLayout 
from PyQt5.QtGui import QIcon 
from PyQt5.QtCore import pyqtSlot 
from PyQt5.QtWidgets import QTableWidget, QTableWidgetItem 
from PyQt5.QtWidgets import QInputDialog, QLineEdit 


class App(QDialog): 

    def __init__(self): 
     super().__init__() 
     self.title = "PyQt5 example - pythonspot.com" 
     self.left = 10 
     self.right = 10 
     self.width = 640 
     self.height = 400 
     self.initUI() 

    def initUI(self): 
     self.setWindowTitle(self.title) 
     self.setGeometry(self.left, self.top, self.width, self.height) 

     age = self.getAge() 
     print(age) 

     self.show() 

    def getAge(self): 
     age, okPressed = QInputDialog.getInt(self, "Get Integer", "Age:", 18, 16, 130, 1) 
     if okPressed: 
      return age 


if __name__ == '__main__': 
    app = QApplication(sys.argv) 
    ex = App() 
    sys.exit(app.exec_()) 
+0

Сообщение об ошибке говорит вам, почему. – ekhumoro

+0

Я знаю .. но он не говорит, как это исправить ... –

ответ

1
NameError: name 'QDialog' is not defined 

Вы получаете эту ошибку, потому что вы забыли импортировать QDialog. Просто добавьте его в конце одного из ваших QWidgets импорта, такие как:

from PyQt5.QtWidgets import QInputDialog, QLineEdit, QDialog 

Кроме того, вы собираетесь получить ошибку атрибута, потому что self.top называется, но никогда не определено. Добавьте его в инициализации функции:

def __init__(self): 
    super().__init__() 
    self.title = "PyQt5 example - pythonspot.com" 
    self.left = 10 
    self.right = 10 
    self.width = 640 
    self.height = 400 
    self.top = 10 
    self.initUI() 
+1

Возможно, 'self.right' следует заменить на' self.top'. – ekhumoro

+0

Похоже, вы правы. Хороший улов. –