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