From: Samuel G. <sg...@ol...> - 2006-08-28 07:21:42
|
Darren Dale wrote: > On Saturday 19 August 2006 12:47, Charlie Moad wrote: > >> On 8/19/06, Darren Dale <dd...@co...> wrote: >> >>> On Friday 18 August 2006 08:27, Darren Dale wrote: >>> >>>> On Wednesday 16 August 2006 04:54, Samuel GARCIA wrote: >>>> >>>>> Thank you, >>>>> Sorry I did known the existence of >>>>> matplotlib.backends.backend_qt4agg. It is more easy than I thought. >>>>> >>>>> but I still have a problem. This is my code : >>>>> >>>>> import sys >>>>> >>>>> from PyQt4.QtCore import * >>>>> from PyQt4.QtGui import * >>>>> >>>>> from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as >>>>> FigureCanvas >>>>> from matplotlib.figure import Figure >>>>> >>>>> #-------------------------------------------------------------------- >>>>> ---- -- ---- class MyWidget(QWidget): >>>>> def __init__(self, parent=None): >>>>> QWidget.__init__(self, parent) >>>>> self.menuBar = QMenuBar() >>>>> self.fileMenu = QMenu(self.tr("&File"), self) >>>>> self.menuBar.addMenu(self.fileMenu) >>>>> >>>>> mainLayout = QVBoxLayout() >>>>> mainLayout.setMenuBar(self.menuBar) >>>>> >>>>> self.setLayout(mainLayout) >>>>> >>>>> #-------------------------------------------------------------------- >>>>> ---- -- ---- if __name__ == "__main__": >>>>> app = QApplication(sys.argv) >>>>> dialog = MyWidget() >>>>> dialog.show() >>>>> sys.exit(app.exec_()) >>>>> >>>>> and it does not works because the main window is blocking. >>>>> >>> There is a comment in the embedding_in_qt.py example: >>> >>> # The QApplication has to be created before backend_qt is imported, >>> otherwise # it will create one itself. >>> >>> This goes for qt4 as well, and is the source of the problem. You can have >>> only one QApplication at a time. (Ted, John, do you think the >>> QApplication really needs to be created during the module import? show() >>> is the only function that looks for the QApplication, maybe the qApp >>> should be created there instead. Any reason against?) >>> >>> I added an example, embedding_in_qt4.py, to the svn repository. It is >>> closely based on embedding_in_qt.py. >>> >> From what I saw, creating QApp in show makes more sense. >> > > I changed the qt backends to create a QApplication in show() rather than at > the time of module import. I also updated the embedding_in_qt* examples. > Samuel, as of svn 2711, you are free to create your QApplication *after* you > import backend_qt(4). > > Darren > > P.S.- For anyone who is interested, I'd recommend "C++ GUI Programming with Qt > 4" (available at Amazon). I'm not an experienced C++ programmer, but the book > has an excellent (and brief) introduction to C++ in the appendix, and is easy > enough to understand for anyone who wants to work with PyQt4.than you Thank you, for the moment It is not a problem for me te create the QApplication before. I have just 1 week to finish my project. And I use the debian package. So I don't have time to install svn version for the moment. I will try it in 2 or 3 weeks. Programming wyth PyQt4 and matplotlib is really great. You can create little but good loocking application in a very short time. Thany you for every people involved in these projects. Samuel |