Soy un Python (3.1.2)/emacs (23.2) novato me enseño a mí mismo tkinter usando el tutorial de pythonware encontrado here. El código relevante se pega debajo de la pregunta.Emacs: shell-python de modo inferior aparece "rezagado"
Pregunta: cuando hago clic en el botón Hello (que debe llamar a la función say_hi), ¿por qué el shell python inferior (es decir, el que inicié con Cc Cc) espera para ejecutar la función de impresión say_hi hasta que a) el botón Salir o b) cerrar el widget raíz? Cuando intento lo mismo en IDLE, cada clic del botón Hello produce una impresión inmediata en el shell IDLE de pitón, incluso antes de hacer clic en Salir o cerrar el widget raíz.
¿Hay alguna peculiaridad en la forma en emacs corre el terminal de Python (frente a IDLE) que provoca este comportamiento "lag"? He notado retrasos de emacs similares frente a IDLE, ya que he trabajado en los problemas de Project Euler, pero este es el ejemplo más claro que he visto hasta ahora.
FYI: utilizar python.el y tienen un init.el relativamente limpio ...
(setq pitón-python-comando "d:/bin/Python31/pitón")
es el única línea en mi init.el.
Gracias,
Mike
=== === Comenzar Código
from tkinter import *
class App:
def __init__(self,master):
frame = Frame(master)
frame.pack()
self.button = Button(frame, text="QUIT", fg="red", command=frame.quit)
self.button.pack(side=LEFT)
self.hi_there = Button(frame, text="Hello", command=self.say_hi)
self.hi_there.pack(side=LEFT)
def say_hi(self):
print("hi there, everyone!")
root = Tk()
app = App(root)
root.mainloop()
intento 'print ('abc', file = sys.stderr)' podría ser buffering problemas (salida a la consola podría ser un búffer de líneas, pero la producción de tubería/archivo podría haber fijado buffer). – jfs
No funcionó. sys.stdout.flush() [la respuesta de msw a continuación] funcionó. ¡Gracias por el comentario, sin embargo! – MikeRand