我想要的是完全删除一个小部件(清除它,删除它,等等...),但它位于网格布局中,所以即使在调用 时removeWidget,它仍然保留一个指针,所以 python 不想删除该对象。这是(剥离的)代码:
def addRow(self, row):
self.entries.insert(row, QtGui.QLineEdit())
self.gridlayout.addWidget(self.entries[row], row, 0)
...
def remRow(self, row):
self.gridlayout.removeWidget(self.entries[row])
del(self.entries[row])
...
(in another function)
foo.addRow(0)
foo.remRow(0)
Run Code Online (Sandbox Code Playgroud)
它从网格布局中删除了小部件,但它并没有完全删除它,所以它实际上被打包在(?)布局下面,并且小部件显然比布局大(但不确定,因为我看不到结尾) 。
那么,有什么方法可以完全删除 QGridLayout 内的小部件吗?
提前致谢!
布局将小部件重新设置为容器的父级。因此,即使您从布局中删除它,容器小部件仍然是父级,因此该小部件不会被删除。您应该调用.deleteLater()告诉 Qt 删除该小部件(有效地清除该小部件的所有引用,以便 Python 可以清除它):
def remRow(self, row):
self.gridlayout.removeWidget(self.entries[row])
self.entries[row].deleteLater()
del self.entries[row]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9406 次 |
| 最近记录: |