我有一个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()可以工作,但是对于旧对象
答案 0 :(得分:0)
您可以使用sip module:
立即删除对象import sip
...
sip.delete(self.day_objs_list[temp_day]['frame'])