PyQt5 QStackedWidget提供“ python3:双重释放或损坏(!prev)”

时间:2019-01-28 19:46:47

标签: python qt widget pyqt5

我编写了一个脚本,每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)”

任何人都可以指导我如何解决此问题,或找到在小部件之间切换的另一种方法。这些小部件将在循环后重复出现

0 个答案:

没有答案