On Thursday 27 October 2011 13:06:25 Pepijn de Vos wrote: > Read Eval Print Loop. Like what you get when you type `python` or `ipython` > even. What is that called in Python language? Interactive shell or > something?
I think is interactive shell, I'm not sure but at least now I know YAA[1] ;-) But back to the subject, PySide doesn't support interactive shells, REPL, whatever when inside the Qt event loop, however you can file a bug[2] about this missing feature. Regards [1] Yet Another Acronym [2] http://bugs.pyside.org > Pepijn > > On Oct 27, 2011, at 3:29 PM, Hugo Parente Lima wrote: > > On Thursday 27 October 2011 06:33:47 Pepijn de Vos wrote: > >> Thanks. So What about a REPL? I really want that, so if it isn't there, > >> I'll attempt to write it. > > > > Sorry, but what means the term REPL? > > > >> Pepijn > >> > >> On Oct 26, 2011, at 6:02 PM, Hugo Parente Lima wrote: > >>> On Wednesday 26 October 2011 11:58:14 Pepijn de Vos wrote: > >>>> Hi, > >>>> > >>>> I'm trying to get started with PySide, after some hacking on > >>>> https://bitbucket.org/3david/qtodotxt > >>>> > >>>> disclaimer: I'm a little frustrated, but I mean well. > >>>> > >>>> I read about the model-view architecture, so I want to start by > >>>> developing my model, which would update itself with a > >>>> QFileSystemWatcher. > >>>> > >>>> The event loop is severely interfering with my development process. > >>>> Before I start it, nothing works, after I start it, I can't use the > >>>> REPL anymore. > >>>> > >>>> My very modest goal for today was to test QFileSystemWatcher, because > >>>> in my hacking on QTodoTxt, it only notified once and then crashed. > >>>> It's telling that watching files has its own module on the Qt bug > >>>> tracker. > >>>> > >>>> Simple, right? > >>>> > >>>> 1. open a file > >>>> 2. set up a watcher > >>>> 2. register a handler > >>>> 3. write to the file > >>>> > >>>> But... the watcher only runs when I start the event loop. How would I > >>>> write to a file after that? > >>>> > >>>> Best would be to run the event loop in the background, or have a REPL > >>>> that runs on the event loop. Couldn't find how to do it. > >>>> > >>>> Second alternative would be to set up a Signal to invoke the write > >>>> from the event loop. How? How about... > >>>> > >>>> s = Signal() > >>>> s.connect(write) > >>>> s.emit() > >>>> Traceback (most recent call last): > >>>> File "<stdin>", line 1, in <module> > >>>> AttributeError: 'PySide.QtCore.Signal' object has no attribute 'emit' > >>> > >>> Hi > >>> > >>> Here is the code to do this: > >>> > >>> from PySide.QtCore import * > >>> import tempfile > >>> import sys > >>> > >>> def onFileChanged(path): > >>> print("%s was changed!" % path) > >>> QCoreApplication.instance().quit() > >>> > >>> def writeOnMyFile(): > >>> global file > >>> print("Writing on %s." % file.name) > >>> file.write("Hello World\n") > >>> > >>> # The file will not be modified until you call flush, close the file > >>> or > >>> > >>> write contents enough. > >>> > >>> file.flush() > >>> > >>> app = QCoreApplication(sys.argv) > >>> > >>> file = tempfile.NamedTemporaryFile() > >>> > >>> watcher = QFileSystemWatcher() > >>> watcher.addPath(file.name) > >>> watcher.fileChanged.connect(onFileChanged) > >>> QTimer.singleShot(0, writeOnMyFile) > >>> sys.exit(app.exec_()) > >>> > >>> > >>> Regards > >>> > >>>> You don't expect me to set up a push button to fire the event, right? > >>>> > >>>> Okay, then maybe there is a test framework for PySide that understand > >>>> the event loop, like in Twisted. Maybe? Searching for it turned up > >>>> nothing, but at last I found > >>>> http://www.pyside.org/docs/pyside/PySide/QtTest/QTest.html No idea how > >>>> to use it though. > >>>> > >>>> I'm sure this is all very simple to you, but I've been trying for > >>>> hours to do something simple, like testing a file watcher. > >>>> > >>>> Pepijn -- Hugo Parente Lima INdT - Instituto Nokia de Tecnologia
signature.asc
Description: This is a digitally signed message part.
_______________________________________________ PySide mailing list PySide@lists.pyside.org http://lists.pyside.org/listinfo/pyside