¿De alguna manera puedo instanciar ipython (o incluso mejor, ipython-qtconsole) y paso a través de su bucle principal (IPython) manualmente?¿IPython itera el bucle principal manualmente?
Quiero editar programas panda3d sobre la marcha.
EDIT1: Aquí hay un ejemplo de código que debería aclarar un poco lo que quiero hacer.
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from direct.showbase.ShowBase import ShowBase
class MyApp(ShowBase):
def __init__(self):
ShowBase.__init__(self)
self.qtApp = QApplication(sys.argv)
label = QLabel("Hello World")
label.show()
self.m = loader.loadModel("frowney")
self.m.reparentTo(render)
while 1:
self.qtApp.processEvents() #manual step trough Qt loop
taskMgr.step() #manual step trough Panda3D loop
app = MyApp()
para que pueda ver cómo puedo entrar manualmente la panda canal y cuarto de galón, lo que quiero hacer lo mismo con ipython si su posible.
RESPUESTA archivo completo:
from direct.showbase.ShowBase import ShowBase
from IPython.lib import inputhook
class MyApp(ShowBase):
def __init__(self):
ShowBase.__init__(self)
self.m = loader.loadModel("frowney")
self.m.reparentTo(render)
def stepMe(self):
taskMgr.step() #manual step trough Panda3D loop
return 0
if __name__ == "__main__":
app = MyApp()
inputhook.set_inputhook(app.stepMe)
En su línea de cmd, sólo tiene que ir al directorio en el archivo es y hacer
ipython
run file.py
app.m.setPos(1,1,1)
Lo siento, pero creo que no has notado _I_Python en el título y el cuerpo de la pregunta. O si lo hiciste, entonces quiero hacer algo como IPython.step() en ese ciclo while. – grizwako
@GrizzLy Uso este método en el intérprete de Python estándar de vez en cuando, así que pensé que podría ser similar a lo que buscabas. Para ipython, ¿puede simplemente 'desde entrada de entrada de IPython.lib inputhook; inputhook.set_inputhook (app.step) '? Parece que debe hacer lo que quieras, y parece funcionar para una aplicación panda3d que tenía por ahí, siempre y cuando "paso" devuelva 0. – mesilliac
disculpa por molestar, pero ¿podrías publicar instrucciones sobre cómo lograrlo? código, y los comandos que utiliza para ejecutarlo así? Lo intenté y no tuve suerte. – grizwako