Tôi là một người mới sử dụng Python (3.1.2)/emacs (23.2) tự học tkinter bằng cách sử dụng hướng dẫn pythonware được tìm thấy here. Mã có liên quan được dán bên dưới câu hỏi.Emacs: python-shell chế độ kém xuất hiện "lagged"
Câu hỏi: khi tôi nhấp vào nút Xin chào (nên gọi hàm say_hi) tại sao vỏ python kém hơn (tức là cái tôi khởi động với Cc Cc) đợi để thực hiện hàm in say_hi cho đến khi tôi nhấp vào) nút Quit hoặc b) đóng tiện ích gốc xuống? Khi tôi cố gắng tương tự trong IDLE, mỗi nhấp chuột của nút Hello tạo ra một bản in ngay lập tức trong vỏ python IDLE, ngay cả trước khi tôi bấm Bỏ hoặc đóng tiện ích gốc.
Có một số điều không minh bạch trong cách các emacs chạy vỏ Python (so với IDLE) gây ra hành vi "chậm trễ" này không? Tôi đã nhận thấy emacs tương tự lags so với IDLE như tôi đã làm việc thông qua các vấn đề Project Euler, nhưng đây là ví dụ rõ ràng nhất mà tôi đã nhìn thấy được nêu ra.
FYI: Tôi sử dụng python.el và có một init.el tương đối sạch sẽ ...
(setq python-python-lệnh "d:/bin/python31/python")
là chỉ dòng trong init.el.
Cảm ơn,
Mike
=== Begin Mã ===
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()
thử 'print ('abc', file = sys.stderr)' nó có thể là vấn đề đệm (đầu ra cho bàn điều khiển có thể được đệm theo đường nhưng đầu ra cho đường ống/tệp có thể có bộ đệm cố định). – jfs
Không hoạt động. sys.stdout.flush() [câu trả lời của msw bên dưới] đã hoạt động. Cảm ơn cho bình luận, mặc dù! – MikeRand