我使用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的子列表中。
答案 0 :(得分:0)
我试图想象你的目标是什么。如果您正在尝试实现一个向导类型的应用程序,其中屏幕显示一组控件,然后使用前进和后退按钮切换到另一个屏幕,那么您应该尝试使用QStackedWidget
。
QStackedWidget
允许您定义一个或多个“页面”并在它们之间切换。您可以独立设计每个页面,而不必(必须)将控件从一个页面移动到下一个页面。