2016-07-27 3 views
0

Здравствуйте, я студент, который экспериментирует с графическим интерфейсом, и я работал на python, создавая простую форму входа в систему, и когда я делал базовый макет, я столкнулся с ошибкой, где я не мог решить переменные. Это код:В PyQt4 как я начинаю окно

try: 
    _encoding = QtGui.QApplication.UnicodeUTF8 
    def _translate(context, text, disambig): 
    return QtGui.QApplication.translate(context, text, disambig, _encoding) 
except AttributeError: 
def _translate(context, text, disambig): 
    return QtGui.QApplication.translate(context, text, disambig) 

def main(): 
    app = QtGui.QApplication(sys.argv) 
    w = Ui_Dialog(__init__) 
    w.show() 
    sys.exit(app.exec_()) 

class Ui_Dialog(object): 
    def __init__(self, parent=None): 
    QtGui.QMainWindow.__init__(self, parent) 
    self.addWidgets() 
    self.setupUi(self) 

def setupUi(self, Dialog): 
    Dialog.setObjectName(_fromUtf8("Dialog")) 
    Dialog.resize(380, 272) 
    Dialog.setMinimumSize(QtCore.QSize(380, 272)) 
    Dialog.setMaximumSize(QtCore.QSize(380, 272)) 
    self.buttonBox = QtGui.QDialogButtonBox(Dialog) 
    self.buttonBox.setGeometry(QtCore.QRect(30, 240, 341, 32)) 
    self.buttonBox.setOrientation(QtCore.Qt.Horizontal) 
      self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok) 
    self.buttonBox.setCenterButtons(True) 
    self.buttonBox.setObjectName(_fromUtf8("buttonBox")) 
    self.user_name = QtGui.QTextEdit(Dialog) 
    self.user_name.setGeometry(QtCore.QRect(110, 50, 221, 31)) 
    self.user_name.setAutoFillBackground(False) 
    self.user_name.setObjectName(_fromUtf8("user_name")) 
    self.user_pass = QtGui.QTextEdit(Dialog) 
    self.user_pass.setGeometry(QtCore.QRect(110, 120, 221, 31)) 
    self.user_pass.setAutoFillBackground(False) 
    self.user_pass.setObjectName(_fromUtf8("user_pass")) 
    self.label = QtGui.QLabel(Dialog) 
    self.label.setGeometry(QtCore.QRect(20, 60, 81, 21)) 
    self.label.setObjectName(_fromUtf8("label")) 
    self.label_2 = QtGui.QLabel(Dialog) 
    self.label_2.setGeometry(QtCore.QRect(20, 120, 81, 21)) 
    self.label_2.setObjectName(_fromUtf8("label_2")) 

    self.retranslateUi(Dialog) 
    QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(_fromUtf8("accepted()")), Dialog.accept) 
    QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(_fromUtf8("rejected()")), Dialog.reject) 
    QtCore.QMetaObject.connectSlotsByName(Dialog) 

def retranslateUi(self, Dialog): 
    Dialog.setWindowTitle(_translate("Dialog", "Dialog", None)) 
    self.label.setText(_translate("Dialog", "USER NAME", None)) 
    self.label_2.setText(_translate("Dialog", "PASSWORD", None)) 

if __name__ == "__main__": 
    main() 

жаль, если выравнивание выключен я не привык к тому, чтобы использовать переполнение стека, но результаты кода в следующий вывод:

Traceback (most recent call last): 
    File "C:\Users\todd7\Desktop\PY_auth\design.py", line 75, in <module> 
    main() 
    File "C:\Users\todd7\Desktop\PY_auth\design.py", line 28, in main 
    w = Ui_Dialog(__init__) 
NameError: name '__init__' is not defined 

и я не уверен, как чтобы решить проблему.

+0

В общем, вы не создавать объекты, передавая '__init__' аргумент , его просто называют за кулисами. Попробуйте 'w = Ui_Dialog()' вместо 'w = Ui_Dialog (__ init __)'. – 101

+0

Я сделал то, что вы предложили, и ответ был «Traceback (последний последний звонок последним): Файл« C: \ Users \ todd7 \ Desktop \ PY_auth \ design.py », строка 75, в main() Файл «C: \ Users \ todd7 \ Desktop \ PY_auth \ design.py», строка 28, в основном w = Ui_Dialog() Файл «C: \ Users \ todd7 \ Desktop \ PY_auth \ design.py», строка 34, in __init__ QtGui.QMainWindow .__ init __ (self, parent) ТипError: дескриптор '__init__' требует объекта 'sip.simplewrapper', но получил 'Ui_Dialog'' –

ответ

0

Попробуйте сделать вашу __init__ функцию в Ui_Dialog классе это:

def __init__(self, window, parent=None): 
    self.addWidgets() 
    self.setupUi(self) 
    window.show() 

Тогда в вашей main() функции,

def main(): 
    app = QtGui.QApplication(sys.argv) 
    w = Ui_Dialog(QtGui.QMainWindow()) 
    sys.exit(app.exec_()) 
Смежные вопросы