【问题标题】:PyQt4: Removing a child from its parentPyQt4:从其父级中删除一个子级
【发布时间】:2010-10-26 22:01:22
【问题描述】:

我使用 Qt 设计器创建了两个 ui,将它们导入我的脚本并使用 setupUi() 方法以正常方式设置它们。当点击一个按钮并执行适当的方法时,新的 ui 被加载,但旧的所有小部件和连接仍然存在。

删除连接然后删除所有 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 的子级列表中。

【问题讨论】:

    标签: python pyqt pyqt4


    【解决方案1】:

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

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

    【讨论】:

    • 我的应用程序有几个不同的视图,所以我试图创建一种有组织的方式在它们之间进行转换。看起来 QStackedWidget 只需稍加编辑即可满足我的目的,谢谢。
    猜你喜欢
    • 1970-01-01
    • 2021-05-30
    • 2021-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多