2010-10-26 167 views
0

我已经使用Qt Designer创建了两个uis,将它们导入到我的脚本中,并使用setupUi()方法以正常方式设置它们。当点击一个按钮并执行适当的方法时,新的UI将被加载,但所有的旧窗口小部件和连接仍然存在。PyQt4:从其父母中删除孩子

什么是正确的方式来删除连接,然后删除所有的MainWindow的当前孩子,以便只有新的用户界面的小部件和连接仍然存在?下面是我正在做的一个简单的例子。

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小部件仍处于儿童的主窗口的列表中。

回答

0

我试图想象你的目标是在这里。如果您尝试实施向导式应用程序,其中屏幕显示一组控件,然后使用向前和向后按钮切换到另一个屏幕,则应尝试使用QStackedWidget

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

+0

我的应用程序有几个不同的视图,所以我试图创建一个有组织的方式来在它们之间转换。它看起来像QStackedWidget将工作为我的目的与一点编辑,谢谢。 – 2010-10-27 04:18:38

相关问题