我有一个QGroupBox
小部件,里面有我想要删除的子项。我怎么做?我找不到任何removeWidget
,removeChild
,removeItem
,或任何类似的the docs。我只能看到如何从布局中删除东西,但显然,它并没有从实际的部件中删除它。pyqt:如何删除一个小部件?
回答
那么,这个工程:对我想删除的小部件,调用widget.setParent(None)
。我喜欢在布局中添加小部件的方式,但从布局中移除不会......有趣的东西。
你必须明白一个小部件是否被创建,无论你是否把它放在一个布局中,并且它有一个父项。布局只是负责组织它在屏幕上,它不是一个可靠或甚至可用的方法来显示和隐藏小部件 – 2011-05-05 15:07:41
我看不到添加或删除小部件(任何添加/删除小部件功能)的方式,除了布局。将小部件添加到布局似乎会使其显示(它实际上将小部件的父级设置为布局所用的容器)。我希望从相同的布局中删除相同的小部件将使其不会显示(即将其重新放回与我之前添加到布局中相同的状态)。但做到这一点的唯一方法似乎是将窗口部件的父项设置为None ...,这根本不是对称的。 – Claudiu 2011-05-05 15:13:01
好吧,你可以使用父母的'removeChild'方法,但最好'隐藏' – 2011-05-05 15:18:32
您确定要实际上删除小部件? hide
不会吗?恕我直言,接受的方法是使用show
/hide
使部件出现并从用户的视图中消失。
的方法是使用QStackedWidget
如果你的部件没有依赖于它的子控件我认为你可以使用:
layout.removeWidget(self.widget_name)
self.widget_name.deleteLater()
self.widget_name = None
在我的测试
当它是有你的孩子的一个小部件:
import sip
layout.removeWidget(self.widget_name)
sip.delete(self.widget_name)
self.widget_name = None
如果您在类或全局级别上没有变量名称,那么您仍然可以使用layout.takeAt(index)从布局中删除该变量,并从QLayoutItem中获取该Widget指针,该函数返回QLayoutItem.widget()方法,这种情况下,您不需要将变量名称分配给None,因为它不是在您的功能之外引用。
试试这两种方法,看看你的作品(重复一堆好多次后不要泄漏记忆)。
- 1. 使用PyQt动态添加和删除小部件在PyQt
- 2. pyqt - 如何从状态栏中的小部件中删除boder?
- 3. 更新一个PyQt小部件
- 4. BeautifulSoup:删除一个小部件
- 5. PyQt的,小部件
- 6. Pyqt小部件被删除后不知所云
- 7. 如何从QToolBar中删除一个小部件?
- 8. 如何从树中删除小部件
- 9. 如何从QAbstractItemView中删除小部件
- 10. 如何删除该小部件中添加的小部件?
- 11. PyQt小部件在多个文件
- 12. PyQt每个选项卡小部件
- 13. PyQt:如何设置一个小部件隐藏其他小部件,如果它是可见的?
- 14. Qt/PyQt:我如何创建一个下拉小部件,如QLabel,QTextBrowser等?
- 15. 我将如何删除与另一班级(PyQt)上的点击按钮的小部件
- 16. PyQt - 在小部件顶部显示小部件
- 17. 如何删除小部件并调整主窗口大小?
- 18. 如何删除布局PyQt的
- 19. 如何清除/删除Tkinter Text小部件的内容?
- 20. PyQT:得到一个小部件的递归子代
- 21. wxPython:隐藏一个小部件并删除剩余空间
- 22. 删除显示的颜色,同时选择一个小部件
- 23. 用PyQt闪烁窗口小部件
- 24. PyQt的:窗口小部件和按钮
- 25. PyQt - 小部件的父 - 必要?
- 26. PyQt小部件边缘切断
- 27. 让pyqt使用可可小部件
- 28. 使用小部件整型。 PyQT与Tkinter
- 29. PyQt自定义小部件在c + +
- 30. 如何从另一个Qwidget中移除小部件?
您是否希望_just_从QGroupBox中移除该小部件,或者您是否想要完全删除该小部件? – 2011-05-06 15:46:48
@Alex:完全删除 – Claudiu 2011-05-06 16:03:29