Cython编译PyQt5代码为pyd后运行出现参数不匹配错误求助
错误根源
PyQt的QPushButton.clicked信号默认会传递一个布尔类型参数(用于标识按钮是否处于选中状态,普通按钮也会触发该参数传递)。在纯Python环境中,解释器会自动忽略函数定义之外的多余位置参数,因此你的代码可以正常运行;但经过Cython编译为pyd扩展后,Cython对函数参数的校验机制更严格,会强制检查传入参数的数量与函数定义完全匹配,因此触发了这个类型错误。
解决方案
只需修改on_button_click方法的定义,使其能够接收信号传递的额外参数即可,有两种常见方式:
- 显式添加参数(即使你不需要使用该参数):
def on_button_click(self, checked=False): print('clicked.')
- 使用可变参数接收任意多余参数:
def on_button_click(self, *args): print('clicked.')
补充说明
你更换Visual Studio版本、降级Cython后问题仍存在,是因为该错误与编译环境版本无关,核心原因是信号传递的参数和方法定义不匹配,和编译工具链没有关系。
内容的提问来源于stack exchange,提问作者mahaha3211
相关产品推荐
相关产品推荐

