可能是Qt错误,也可能是我的应用中的错误,我希望有人可以帮我诊断。
我正在构建一个使用qtdesigner和pyuic5构建的接口的PyQt5应用程序。
我的窗口中有QSpinBox
小部件,我连接到两个这样的方法:
self.img1IndexBox.valueChanged.connect(self.changeImage1)
self.img2IndexBox.valueChanged.connect(self.changeImage2)
除了一件事,一切似乎在应用程序中都能正常工作:如果我将鼠标滚动到旋转框上,我可以使它增加值。如果我用文本更改值,一切正常。如果我在旋转框上使用键盘箭头,它可以正常工作。但是如果我点击旋转框中的向上或向下箭头,我会得到两个changeValue
事件,一个双增量。就像我点击了两次。实际上,它甚至可以从动画中看出它正在为下压创建一个事件,而另一个则是在按钮重新启动时。
这可能只是一个库错误,或者在我的程序中可能导致这种情况的原因是什么?我该怎么调试呢?
答案 0 :(得分:2)
通过将spinbox enable设置为false,您可能能够防止出现双重情况。 然后在处理大数据后将其启用为真。
点击向上/向下箭头 on_valuechanged ui-> spinbox-> setEnabled(false);
然后在函数on_valuechanged结束之前将其设置为true。 ui-> spinbox-> setEnabled(true);
答案 1 :(得分:0)
显然问题是事件触发了一个很长的例行程序,这会延迟"按钮释放"事件,这是足够的时间让系统认为用户实际上按住按钮,产生更多的事件......但我仍然有兴趣学习什么是一个很好的循环。是否有一个很好的pyqt-onic方法来启动该方法的线程?