On Fri, Oct 24, 2014 at 2:48 PM, <peter_kara...@keysight.com> wrote: > Related question to this: > > in C++ you can do this to make events start running before > QApplication.exec() is called: > > > > > * QApplication::sendPostedEvents(); > QApplication::processEvents( ); // if you do this in a > while-loop, you can interact with widgets ... * > Is it not possible to do this from PySide? > I’m not sure, but this:
QApplication::sendPostedEvents(); QApplication::processEvents(); // if you do this in a while-loop, you can interact with widgets ... …is pretty much what PySide.QtGui.QApplication.exec_() does (see here <http://pages.citebite.com/n3n8v4q9r1dti>). So why not just use exec_(), unless you have really specific requirements? I tried to make a C++ wrapper object > but it seemed like the PySide objects weren't getting updated, although > C++ QT widgets would appear and allow you to interact before > QApplication.exec() starts. > > regards, > Peter Karasev > > ________________________________________ > От: pyside-bounces+peter_karasev=keysight....@qt-project.org > [pyside-bounces+peter_karasev=keysight....@qt-project.org] от имени Jim > Byrnes [jf_byr...@comcast.net] > Отправлено: 24 октября 2014 г. 11:29 > Кому: pyside@qt-project.org > Тема: Re: [PySide] Why doesn't this example work? > > On 10/22/2014 11:26 PM, Sean Fisk wrote: > > Hi Jim, > > > > With all due respect to the author of the book, I don’t think this is a > > very good example. The most important thing to realize is that nothing > > really happens before the event loop is started. The line: > > > > myApp.exec_() > > > > is what starts the event loop. Without the event loop running, windows > > won’t appear, user input cannot be handled, and basically nothing > > QtGui-related will work. *Even if* windows show up before the event loop > is > > started, they won’t be able to respond to user interaction (as far as I > > understand). > > > > I would personally achieve the desired behavior like so: > > > > #!/usr/bin/env python > > import sys > > from PySide import QtCore, QtGui > > class SampleWindow(QtGui.QWidget): > > def __init__(self, parent=None): > > super(SampleWindow, self).__init__(parent) > > self.setWindowTitle('Sample Window') > > self.setGeometry(300, 300, 200, 150) > > self.setMinimumHeight(100) > > self.setMinimumWidth(250) > > self.setMaximumHeight(200) > > self.setMaximumWidth(800) > > > > @QtCore.Slot() > > def do_resize(self): > > self.resize(300, 300) > > self.setWindowTitle('Sample Window Resized') > > def main(argv): > > app = QtGui.QApplication(argv) > > > > # Create and show the window. > > window = SampleWindow() > > window.show() > > # PySide windows don't auto-raise on Mac OS X. > > window.raise_() > > > > # Set up a timer to fire 3 seconds *after the event loop starts*. > > QtCore.QTimer.singleShot(3000, window.do_resize) > > > > # Start the event loop. Nothing Qt-related happens until this call. > > return app.exec_() > > if __name__ == '__main__': > > raise SystemExit(main(sys.argv)) > > > > The key take-away is that nothing QtGui-related *actually* happens before > > the event loop is started, and everything is done by the time that it > exits. > > > > Hope this helps. Feel free to let me know if anything doesn’t make sense. > > > > Thanks for the code and the explanation. It works and I can follow it > and understand what is happening. > > Thanks, Jim > > > > > -- > > Sean Fisk > > > > On Wed, Oct 22, 2014 at 8:17 PM, Jim Byrnes <jf_byr...@comcast.net> > wrote: > > > >> In looking at the lists archives, I see that most of the participants > >> seem to be experienced developers. As a novice programmer I hope I am > >> not intruding by asking some basic questions. > >> > >> I am working my way through examples in a PySide book I bought. > >> According to the author the example should display a 200 x 150 window, > >> pause 3 seconds and then display a 300 x 300 window. On my system > >> (Ubuntu 12.04) there is a approx 3 second delay after starting the > >> program and then I see the 300 x 300 window. I never see the first > window. > >> > >> Could someone explain to me why it does not act as described? > >> > >> # Import required modules > >> import sys > >> import time > >> from PySide.QtGui import QApplication, QWidget > >> > >> class SampleWindow(QWidget): > >> """ Our main window class > >> """ > >> > >> # Constructor function > >> def __init__(self): > >> QWidget.__init__(self) > >> self.setWindowTitle("Sample Window") > >> self.setGeometry(300, 300, 200, 150) > >> self.setMinimumHeight(100) > >> self.setMinimumWidth(250) > >> self.setMaximumHeight(200) > >> self.setMaximumWidth(800) > >> > >> if __name__ == '__main__': > >> # Exception Handling > >> try: > >> myApp = QApplication(sys.argv) > >> myWindow = SampleWindow() > >> myWindow.show() > >> time.sleep(3) > >> myWindow.resize(300, 300) > >> myWindow.setWindowTitle("Sample Window Resized") > >> myWindow.repaint() > >> myApp.exec_() > >> sys.exit(0) > >> except NameError: > >> print("Name Error:", sys.exc_info()[1]) > >> except SystemExit: > >> print("Closing Window...") > >> except Exception: > >> print (sys.exc_info()[1]) > >> > >> Thanks, Jim > >> > >> _______________________________________________ > >> PySide mailing list > >> PySide@qt-project.org > >> http://lists.qt-project.org/mailman/listinfo/pyside > >> > > > > > > > > _______________________________________________ > > PySide mailing list > > PySide@qt-project.org > > http://lists.qt-project.org/mailman/listinfo/pyside > > > > > _______________________________________________ > PySide mailing list > PySide@qt-project.org > http://lists.qt-project.org/mailman/listinfo/pyside > > _______________________________________________ > PySide mailing list > PySide@qt-project.org > http://lists.qt-project.org/mailman/listinfo/pyside > >
_______________________________________________ PySide mailing list PySide@qt-project.org http://lists.qt-project.org/mailman/listinfo/pyside