Я новичок в Python (3.1.2) / emacs (23.2), обучающий себя tkinter с помощью учебника по pythonware, найденного здесь . Соответствующий код вставлен ниже вопроса.
Вопрос: когда я нажимаю кнопку Hello (которая должна вызывать функцию say_hi), почему нижняя оболочка python (т. Е. Та, которую я запустил с помощью Cc Cc) ожидает выполнения функции печати say_hi, пока я не а) нажму Кнопка выхода или б) закрыть корневой виджет вниз? Когда я пытаюсь сделать то же самое в IDLE, каждое нажатие кнопки Hello приводит к немедленной печати в оболочке Python IDLE, даже до того, как я нажимаю Quit или закрываю корневой виджет.
Есть ли какая-то особенность в том, что emacs запускает оболочку Python (против IDLE), которая вызывает такое "запаздывающее" поведение? Я заметил аналогичные лаги в emacs и IDLE, когда работал над проблемами Project Euler, но это самый яркий пример, который я видел.
К вашему сведению: я использую python.el и у меня относительно чистый init.el ...
(setq python-python-команда "d: / bin / python31 / python")
единственная строка в моем init.el.
Спасибо
Mike
=== Начать код ===
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()