Pyqt信号打开对话框lambda函数错误:对象Ui_dialog不可调用

时间:2016-05-11 18:14:09

标签: python qt lambda pyqt qdialog

我的问题是,当我在pyqt中触发Qaction打开QDialog时,我曾经使用lambda函数(传递参数),但是当我测试GUI时,我第一次打开了对话框,但是,当我第二次打开时,shell会抛出这个错误

    Traceback (most recent call last):
  File "C:\path\to\file\launcher.py", line 51, in <lambda>
    self.ui.actionIngresar_Licencia.triggered.connect(lambda: self.Dlg_IngresarLicencia())
TypeError: 'Ui_dialogoLicencia' object is not callable

好的,你可以说我没有传递任何参数,但如果我需要传递参数时会出现此错误,那就太糟糕了。当我把函数没有lambda函数时,gui工作得很好 这是对话框的功能。

def Dlg_IngresarLicencia(self):
    self.Dlg_IngresarLicencia = Ui_dialogoLicencia()
    self.dialogo = QtGui.QDialog(parent=None)
    self.Dlg_IngresarLicencia.setupUi(self.dialogo)
    self.Dlg_IngresarLicencia.btn_ObtenerLicencia.clicked.connect(lambda: Componentes().clickObtenerLicencia())
    self.dialogo.show()

谢谢你们,我希望你能帮助我

1 个答案:

答案 0 :(得分:1)

您的方法与您正在设置的属性相同:

def Dlg_IngresarLicencia(self):
    self.Dlg_IngresarLicencia = Ui_dialogoLicencia()

因此,在第一次调用之后,您使用Ui_dialogoLicencia实例覆盖该方法,该实例不可调用。