标题几乎总结了这个问题。我有一个我已编码的GUI,我正在尝试修改我的错误处理,以便更好地利用PyQt的信号和插槽。但是,我遇到了一些问题。我正在测试一个错误处理语句,如果一个用户点击一个特定的按钮就会得到一个对话框,告诉他们他们还没有输入正确的信息。此对话框由信号和插槽控制,并在应该出现时显示。但是,如果我关闭对话框然后再次单击该按钮,对话框将弹出两次。这是偶然发生的。也就是说,如果我第三次单击该按钮,对话框会出现三次,依此类推。我不知道还能做什么。我尝试检查以确保所有QThreads结束。我甚至使用QThread.terminate(),你永远不应该这样做,我仍然得到相同的结果。关于是什么导致这个的任何想法?代码snipet在下面。
{{1}}
答案 0 :(得分:0)
我已经回答了我自己的问题。问题不是由我的任何错误处理引起的,而是我如何将信息传递给我创建的QThread类实例以启动新线程。我在我的脚本的 init 方法中创建了QThread对象的实例,并且这不会让实例被收集为垃圾,因为它们在主GUI循环中一直被使用。解决方案只是将QThread异议的创建转移到一个单独的函数中。