我可以通过deleteLater()将信号分配给旧对象的析构函数中的新对象吗



我有一个滚动区,那里有几个按钮和框架点击按钮

self.connect(self.day_btn, QtCore.SIGNAL("toggled(bool)"), self.show_days)

我调用一个函数,尝试使用deleteLater()删除scrollArea中的所有对象

def show_days(self):      
    if self.day_btn.isChecked():
        if self.day_objs_list:
            for temp_day in self.day_objs_list:
                self.day_objs_list[temp_day]['frame'].deleteLater()

然后在此函数中创建新的帧,并需要应用self.scrollArea.ensureWidgetVisible()

但看起来它被应用于旧的(删除的)对象,并且只有在那之后它才创建新的对象

正如我从deleteLater()中了解到的那样,是否等待所有待处理的信号被传递?

当您发出信号时,它会被放置在事件队列中。调用deleteLater还会向队列添加一个事件

如何添加在deleteLater()之后工作的函数信号简单的发射不起作用。它使ensureWidgetVisible()工作,但对于旧对象

您可以使用sip模块立即删除对象:

import sip
...
sip.delete(self.day_objs_list[temp_day]['frame'])

相关内容

  • 没有找到相关文章

最新更新