[PyQt] centrawidget and mainwindow

Jamie Riotto jamie.riotto at gmail.com
Wed Jan 20 18:46:10 GMT 2010


Ok, I tried to help out here by creating a trivial example, but I seem
to have a problem of my own! Here is the example:

==================================================

from PyQt4 import QtCore, QtGui

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

        self.textEdit1 = QtGui.QPlainTextEdit()
        self.textEdit1.setPlainText("Text Editor #1")

        self.textEdit2 = QtGui.QPlainTextEdit()
        self.textEdit2.setPlainText("Text Editor #2")

        self.setCentralWidget(self.textEdit1)

        self.createActions()
        self.createToolBars()

    def createActions(self):
        self.edit1Act = QtGui.QAction(QtGui.QIcon(), "&Editor-1",
                self, shortcut=QtGui.QKeySequence.New,
                statusTip="", triggered=self.centralizeEdit1)

        self.edit2Act = QtGui.QAction(QtGui.QIcon(),"&Editor-2",
                self, shortcut=QtGui.QKeySequence.Open,
                statusTip="", triggered=self.centralizeEdit2)

    def createToolBars(self):
        self.fileToolBar = self.addToolBar("Central Widget Control")
        self.fileToolBar.addAction(self.edit1Act)
        self.fileToolBar.addAction(self.edit2Act)

    def centralizeEdit1(self):
        self.setCentralWidget(self.textEdit1)

    def centralizeEdit2(self):
        self.setCentralWidget(self.textEdit2)


if __name__ == '__main__':
    import sys
    app = QtGui.QApplication(sys.argv)
    mainWin = MainWindow()
    mainWin.show()
    sys.exit(app.exec_())


================================================
When I run this, it correctly sets Text Edit #1 as Central Widget.
Pressing "Editor-2" button correctly changes the Central
Widget to Text Edit #2, however, when I press "Editor-1" button to
restore Text Edit #1 to Central Widget I get:


RuntimeError
"underliying C/C++ object has been deleted"


Any clues as to what I'm doing wrong??? Thanks - jamie


>On Wed, Jan 20, 2010 at 9:14 AM, M Chauhan <mrch81 at gmail.com> wrote:
> Hi Tabish,
>
> I would like to replace centralwidget of a mainwindow with another widget
> which is created separately.
>
> For. ex. when I click on a button on mainwindow it should replace the
> current centralwidget by a new one.
>
> Please let me know if you need more info.
>
> Thanks,
> Mrugesh.
>
>
> 2010/1/19 tabish--> <tabish_shaikh555 at yahoo.com>
>>
>> can you please describe ur problem in a better way?
>>
>> Mrugesh Chauhan wrote:
>> >
>> > Hello all,
>> >
>> > Have been trying to find solution to one problem.
>> >
>> > There's a main window. And there's a widget. Let's call this widget  -->
>> > widget_new.
>> >
>> > I would like to replace centralwidget of the mainwindow with the
>> > widget_new.
>> >
>> >
>> > setCentralwidget by passing widget_new ( generated by designer) doesn't
>> > help.
>> >
>> > Someone must have come across such a problem. Any leads will be helpful.
>> >
>> > Thanks,
>> > Mru
>> >
>> > _______________________________________________
>> > PyQt mailing list    PyQt at riverbankcomputing.com
>> > http://www.riverbankcomputing.com/mailman/listinfo/pyqt
>> >
>>
>> --
>> View this message in context:
>> http://old.nabble.com/centrawidget-and-mainwindow-tp27212686p27221899.html
>> Sent from the PyQt mailing list archive at Nabble.com.
>>
>> _______________________________________________
>> PyQt mailing list    PyQt at riverbankcomputing.com
>> http://www.riverbankcomputing.com/mailman/listinfo/pyqt
>
>
> _______________________________________________
> PyQt mailing list    PyQt at riverbankcomputing.com
> http://www.riverbankcomputing.com/mailman/listinfo/pyqt
>


More information about the PyQt mailing list