PyQt学习随笔:使用PyCharm+PyQt开发遇到的坑

最近三天,老猿都在使用PyCharm+QtDesigner工具,通过xlwings读取Excel的数据到TableView中显示的练习,本以为很容易的一件事,断断续续持续了三天时间才终于成功。在这个过程中,遇到了几个定位比较耗时实际上却比较简单的问题,在这儿总结出来供学习这方面内容的同好参考:
一、PyCharm并不能很好的完成语法检查,有时运行时突然终止,仔细核查却发现是基本的语法错误。建议遇到这种问题时,首先使用Python IDLE打开文件进行一次完整语法检查(菜单路径:run->Check Module)。
修订:关于这个说法第二天老猿就发现不正确,PyCharm是有代码检测功能的。具体请大家参考:Python学习随笔:PyCharm的错误检测使用及调整配置减少错误数量

二、使用PyQt后,有些和PyQt相关的开发代码出现异常后程序直接退出,并没有抛出任何异常,使用IDLE环境执行同样如此。解决这个问题老猿没有找到很好的解决办法,只有3个笨办法:
1、一个是逐行调试,看代码退出位置再检查该行或其下一行是否存在异常因素。例如有次老猿读取的Excel文件中存在空行,处理数据时没有判断数据有效性,导致处理到该行数据时程序异常终止,为了核查这个问题就去了半天,因为才开始根本不知道在哪个代码处退出的,数据处理轨迹才开始也没有记录,也不知道处理到哪退出的,反复修改代码,加调试输出信息才最终发现就是空行的原因;
2、给通过第三方模块处理输出的数据加有效性判断,特别是是否为None,减少出错的概率;
3、对关键处理代码增加异常处理,截获异常自己输出信息。

三、注意类的成员方法特别是槽函数是否加了self参数,老猿这次有个槽函数定义时忘记加self参数,执行到调用该函数前一行程序就异常终止,也是查了半天,最后才发现问题;

四、注意界面输入对象获取的数据都是文本字符串,如果要用作其他类型时一定要转换类型。这次读取Excel文件时,在界面上指定读取文件的sheet名或序号,当输入序号时应该以数字去获取sheet,但代码中忘记转换了,结果导致一执行到就退出;

五、PyQt提供的方法对类型检查本身不严格,但被PyQt包装的核心Qt本身是C++语言支持的,对类型检查严格,因此在调用时注意参数类型是否与定义一致;

六、PyQt的类或常量不知道来自哪个模块,遇到这种情况一种方法是import时逐一尝试,毕竟模块就那么几个,另一种是查看文档,qt官方文档地址为:https://doc.qt.io/archives,选择自己的版本后进入,但不提供关键词搜索功能,不是很好找;还有个办法是查看模块的__dict__,方法都比较笨。


博客地址:https://blog.csdn.net/LaoYuanPython

老猿Python博客文章目录:https://blog.csdn.net/LaoYuanPython/article/details/98245036

posted @ 2019-10-06 22:46  老猿学Python  阅读(209)  评论(0编辑  收藏  举报