2016-05-30 3 views
0

に私のコードのレイアウトを削除する方法:PyQtは

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

オーケーを、今私は最初、3つの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はすべてうまく動作しますが、たくさんのファイルがあり、レイアウトを削除するには関数を使用する必要があります 私を助けることができますか? :)

答えて

0

私がこの問題で見つけた最良の決定は、1つのレイアウトを持つことです。 mainlayout = QHBoxLayout()。 Layout-conteinerの一種です。その後、あなたはself.setLayout(mainlayout)です。その後、self.layout().addLayout(whateverlayoutyouwantedtoseehere)のようなことをすることができます。変更する必要がある場合は、 self.layout().takeAt(0)self.layout().addLayout(anotherlayoutyouwantedamomentlater)のようにしてください。以前のレイアウトを再帰的に破棄する必要が生じる場合があります。like that