【问题标题】:How to delete layout in Pyqt如何在 Pyqt 中删除布局
【发布时间】:2017-01-19 20:46:05
【问题描述】:

我的代码:

Ui_startscreen.setupUi(self,self.areaplace)
self.FRAME_BUTTON.mousePressEvent = self.open_sec_view;
def open_sec_view(self,e):
     Ui_sec.setupUi(self,self.areaplace);

好的,现在我有三个 python 文件,第一个 -> start-program.py,第二个 -> main.py,第三个 -> secview.py

start-program.py 是带有空白框架的基本 QT GUI 文件 -> self.areaplace 当程序启动时 self.areaplace 包括 Ui_startscreen(main.py)。 在点击 Ui_startscreen -> self.FRAME_BUTTON 期间,我需要删除 self.areaplace 布局并清除视图,但是当我使用时:

self.horizontalLayout.deleteLater()
self.areaplace.findChild(QtGui.QWidget).deleteLater()

控制台返回这个错误:

QLayout: Attempting to add QLayout "" to QWidget "secview", which already has a layout

我知道我必须删除/移除布局,但我不知道如何:/ 当我评论 Horizo​​ntalLayout 时,一切都很好,但我有很多文件,我需要使用函数来删除布局 你能帮助我吗 ? :)

【问题讨论】:

    标签: python qt


    【解决方案1】:

    我在这个问题上发现的最佳决定是拥有一个布局,例如mainlayout = QHBoxLayout()。作为一种布局容器。然后你self.setLayout(mainlayout)。然后你可以做self.layout().addLayout(whateverlayoutyouwantedtoseehere)之类的事情,当你需要改变的时候就做 self.layout().takeAt(0)self.layout().addLayout(anotherlayoutyouwantedamomentlater)。递归破坏你之前的布局可能有必要,可以这样做like that

    【讨论】:

      猜你喜欢
      • 2016-09-30
      • 2017-09-06
      • 1970-01-01
      • 2017-09-05
      • 1970-01-01
      • 2023-03-24
      • 1970-01-01
      • 2017-05-10
      • 2012-08-01
      相关资源
      最近更新 更多