PySide2 PyQt5 错误异常 调试漏洞 疑难杂症 解决办法汇总


一个应用程序能成形,是一些基本功能 + 无数次漏洞修复的成果。

这种无数次漏洞修复,最好采用 批处理式 IDE ,否则,一直停留在原型开发阶段还不如没有,那种生不如死的感觉,会让您怀疑人生。

调试时,最好强制直接注释掉无用代码 (或可能出错的代码段),测试时直接输出一些提示信息、生成本地文件或弹出错误提示对话框。

    def variableTest(self, directory):
        print('One Check Point')
        #sender = sender()
        sender = self.sender()
        if directory:
            print('Two Check Point', directory)
            #self.signalTest.emit(text)
            self.signalTest.emit(directory)
					

print('One Check Point') 和 print('Two Check Point'),依次类推,用于标识先后顺序。

不建议采用一般 IDE 带的跳过代码标记测试法,因为不太直观 (还可能存在其它问题)。

由于标记间的原代码仍正常展示,有没有问题或错误值得怀疑。

以下基于实战,列出一些错误 异常示例代码及解决办法:

变量问题


以下是源代码开发过程中,最常见的一种出错方式。

Python 解释器解释时可能不会输出错误提示而是直接崩溃,因为未导入变量 SIGNAL。

    def testTimer(self):
        if not hasattr(self, "testTimer"):
            from PySide2.QtCore import QTimer; self.testTimer = QTimer()
            self.connect(self.testTimer, SIGNAL("timeout()"), self.textThread)
        self.testTimer.start(5000)
					

正确代码:

    def testTimer(self):
        if not hasattr(self, "testTimer"):
            from PySide2.QtCore import QTimer, SIGNAL; self.testTimer = QTimer()
            self.connect(self.testTimer, SIGNAL("timeout()"), self.textThread)
        self.testTimer.start(5000)
					

See also:

程序漏洞和使用场景 设备硬件 线程进程的关系 产生原因

Python警告异常 错误漏洞 疑难杂症 解决办法

Copyright Notice: This article is exclusive original manuscripts, copyrighted by Happy Digits Software , shall not be reproduced without permission.