В отчете об ошибках выполнения отсутствует атрибут accept - PullRequest
0 голосов
/ 16 января 2012

Я работаю с python. Когда я пытаюсь запустить свой файл DlgDbError.py, он выдает сообщение об ошибке:

File "C:\rt_sql_layer\ui\DlgDbError_ui.py", line 47, in setupUi
    QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("accepted()"), DlgDbError.accept)
AttributeError: 'DlgDbError' object has no attribute 'accept'

, но у buttonbox есть метод accept .. в чем может быть проблема ??

Ответы [ 3 ]

2 голосов
/ 16 января 2012

Ошибка не в вашем файле DlgDbError.py, а в модуле DlgDbError_ui.py, который вы создали с помощью pyuic4.

Этот модуль будет содержать класс Ui_DlgDbError с методом setupUi. Этот метод имеет единственный аргумент (с именем DlgDbError), который принимает экземпляр класса основной формы, который вы создали в Qt Designer (то есть тот, который также называется DlgDbError).

Метод setupUi ожидает, что объект DlgDbError будет иметь слот accept(), что, вероятно, означает, что он должен быть подклассом QDialog.

Очевидно, вы не передаете подкласс от QDialog до setupUi, и поэтому вы получаете AttributeError.

Вам, вероятно, нужно сделать что-то вроде этого:

from DlgDbError_ui import Ui_DlgDbError

class MyDlgDbError(Ui_DlgDbError):
    def __init__(self, parent=None)
        self.dialog = QtGui.QDialog(parent)
        self.setupUi(self.dialog)
        ...
1 голос
/ 16 января 2012

Если строка должна быть:

QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(_fromUtf8("accepted()")), DlgDbError.accept)

т.е. QtCore.SIGNAL ("accept ()") должен фактически быть QtCore.SIGNAL (_fromUtf8 ("accept ()"))

Где:

_fromUtf8 = QtCore.QString.fromUtf8
1 голос
/ 16 января 2012

Может быть, это будет self.buttonBox.accept вместо DlgDbError.accept тогда?

...