PyQt4:从父项中删除子项

时间:2010-10-26 22:01:23

标签: python pyqt pyqt4

我使用Qt Designer创建了两个uis,将它们导入到我的脚本中,并使用setupUi()方法以正常方式设置它们。单击一个按钮,并执行相应的方法时,将加载新的ui,但旧的uidge和连接仍然存在。

删除连接然后删除所有MainWindow当前子节点的正确方法是什么,以便只保留新的ui小部件和连接?下面是我正在做的一个简化示例。

from PyQt4    import QtGui, QtCore
from Models   import *
from Backward import Ui_Backward
from Forward  import Ui_Forward

class MainWindow( QtGui.QMainWindow ):
  def __init__( self ):
    QtGui.QMainWindow.__init__( self, None )

    self.move_forward()

  def move_forward( self ):      
    self.ui = Ui_Forward()
    self.ui.setupUi( self )
    self.connect( self.ui.Button, QtCore.SIGNAL('clicked()'), self.move_backward )

  def move_backward( self ):      
    self.ui = Ui_Backward()
    self.ui.setupUi( self )
    self.connect( self.ui.Button, QtCore.SIGNAL('clicked()'), self.move_forward )

设置Ui_Forward并按下按钮后,Ui_Backward设置正确,但Ui_Forward的所有小部件仍然在MainWindow的子列表中。

1 个答案:

答案 0 :(得分:0)

我试图想象你的目标是什么。如果您正在尝试实现一个向导类型的应用程序,其中屏幕显示一组控件,然后使用前进和后退按钮切换到另一个屏幕,那么您应该尝试使用QStackedWidget

QStackedWidget允许您定义一个或多个“页面”并在它们之间切换。您可以独立设计每个页面,而不必(必须)将控件从一个页面移动到下一个页面。