背景说明:
编写一个PyQt5程序,在主程序中调用两个子窗口UI程序,运行时,按钮关联槽函数处报错:
错误提示:
>>>Exception "unhandled TypeError"
argument 1 has unexpected type 'NoneType'
代码如下:
if __name__=="__main__":
app = QApplication(sys.argv)
main_window = CallMainWin_Assembly() #主窗口类进行示例化
child_window = CallChildWin() #子窗口类进行实例化
#通过AddMalfun将两个窗体关联
btn=main_window.ui.AddMalfun
btn.clicked.connect(child_window.show())
main_window.show()
sys.exit(app.exec_())
解决办法:
将clicked信号所关联的槽函数child_windows.show()使用lambda定义,代码如下:
btn.clicked.connect(lambda:child_window.show())
问题解决,完美运行
个人理解:因为show()函数是该主调用程序的外部函数,所以需要使用lambda进行定义。