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

Can I assign signal to new object in destructor of old one by deleteLater()

我有一个 scrollArea,里面有几个按钮和框架 单击按钮

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()

但看起来它已应用于旧(已删除)对象,并且仅在此之后它才创建新对象

据我了解 Does deleteLater() wait for all pending signals to be delivered?

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

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

您可以使用 sip module:

立即删除对象
import sip
...

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