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?
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 _______________________________________________ PySide mailing list [email protected] http://lists.pyside.org/listinfo/pyside
