PyQt4: удаление дочернего элемента от его родителя - PullRequest
0 голосов
/ 27 октября 2010

Я создал два интерфейса пользователя с помощью Qt Designer, импортировал их в мой скрипт и установил их обычным способом, используя метод setupUi (). При нажатии кнопки и выполнении соответствующего метода загружается новый пользовательский интерфейс, но все виджеты и соединения из старого сохраняются.

Как правильно удалить подключения, а затем удалить все текущие дочерние элементы 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 все еще находятся в списке дочерних элементов MainWindow.

1 Ответ

0 голосов
/ 27 октября 2010

Я пытаюсь представить, какова ваша цель здесь.Если вы пытаетесь реализовать приложение типа мастера, в котором на экране представлен один набор элементов управления, а затем переключается на другой экран с помощью кнопок «вперед» и «назад», то вам следует попробовать использоватьпозволяют определить одну или несколько «страниц» и переключаться между ними.Вы создаете каждую страницу независимо друг от друга, и вам не нужно (обязательно) перемещать элементы управления с одной страницы на другую.

...