我编写了一个脚本,每10秒在小部件之间切换一次。该程序可以在白天/晚上无任何交互地运行。该程序在Raspberry Pi 3 Model B上运行。代码执行得很好,并且可以在小部件之间翻转,但是一段时间后,它停止运行并显示错误“ python3:双重释放或损坏(!prev)”
我已经使用GDB回溯了问题。但是我收到以下错误:“回溯停止:上一帧与此帧相同(损坏的堆栈?)”
我在整个代码中添加了打印语句,并且能够将错误夹在以下方法调用中。下方
要验证代码在setCurrentIndex(key)方法上是否失败,如下所示,我注释掉了片段并运行程序。程序没有出错,但是我无法在小部件之间切换。
def __init__(self):
self.labels = dict()
self.groups = dict()
self.frame = ""
self.widgets= QtWidgets.QStackedWidget()
self.setup_ui()
self.size = 0
def setup_ui(self, frame):
self.init_groups() # This method creates all the widgets and adds it to self.widgets
self.widgets.setCurrentIndex(0)
layout = QtWidgets.QVBoxLayout()
layout.addWidget(self.widgets)
self.setLayout(layout)
def flip_widget(self, key):
print("\tflip_start")
self.window.setCurrentIndex(key) # PROBLEM COMES FROM HERE
print("\tflip_done")
预期结果是每10秒有一个不同的小部件 实际结果在2-8小时后会更改为代码。最初,代码运行良好,并且可以正确更改窗口小部件。但是一段时间后它存在,并且我收到以下错误:“ python3:double free或rupture(!prev)”
任何人都可以指导我如何解决此问题,或找到在小部件之间切换的另一种方法。这些小部件将在循环后重复出现