【问题标题】:python TypeError: __init__() takes exactly 4 arguments (1 given)python TypeError: __init__() 正好需要 4 个参数(1 个给定)
【发布时间】:2012-01-26 06:57:20
【问题描述】:

我正在使用 QGIS 的 python 插件。我正在使用 python2.5 和 pyqt4。我的 init 方法需要 4 个参数。当我尝试使用显示表单时 window = DlgQueryBuilder() ,m 不传递任何参数。我的 .py 代码如下:

class DlgQueryBuilder(QtGui.QMainWindow, Ui_Dialog):
    def __init__(self, db, iface, parent):
        QtGui.QMainWindow.__init__(self)
        Ui_Dialog.__init__(self)
        self.dialog = QtGui.QDialog(parent)

        self.setupUi(self)
        self.db = db 
        # ...

if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    window = DlgQueryBuilder()
    window.show()
    sys.exit(app.exec_())

错误:

Traceback (most recent call last):
File "C:\rt_sql_layer_working\DlgQueryBuilder.py", line 1176, in <module>
window = DlgQueryBuilder();
TypeError: __init__() takes exactly 4 arguments (1 given)

我需要传递什么参数??

【问题讨论】:

  • 发布 Python 代码时请注意缩进。这对代码的含义非常重要。我试图修复它;我想这就是你的意思。
  • ...你是认真的吗???它就在您的__init__() 中,用于您的DlgQueryBuilder 课程。传入你编写该类时期望得到的内容(self 除外,Python 会自动传入)。
  • 问题是你不知道这些论点应该是什么?
  • 是的..我试过 window = DlgQueryBuilder('postgres','')...m 也在做 RnD..iface 是什么意思?
  • 你也可以在你的__init__ 中设置默认值,如果你不想传递任何东西(除了自己)。像def __init__(self, db=None, iface=None, parent=None): 这样的东西显然不要使用任何东西,使用有意义的东西

标签: python qt plugins pyqt4


【解决方案1】:

您需要传递dbifaceparent 参数,这些参数在您的__init__ 方法声明中定义。

【讨论】:

  • okthanx:) 什么是 TypeError: 'sip.methoddescriptor' object is not callable??
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-15
  • 1970-01-01
相关资源
最近更新 更多