Tkinter - Return 仅在第二次执行后出现

Tkinter - Return only occurs after the 2nd execution

我在 Tkinkter 中有一个非常简单的应用程序。我正在 运行 将其保存在 Ipython 笔记本中。

问题是每当我 运行 应用程序并按下按钮 'Get' 一次时,没有任何返回。我再次按下按钮,返回了两个值。我按下按钮 3 次或更多次,每次按预期按下按钮时返回 1 个值。问题出在第一次按下按钮时。我不明白发生了什么事。

from tkinter import *
from tkinter import ttk, Tk 

class SampleApp(tk.Tk):
    def __init__(self):
        tk.Tk.__init__(self)
        self.entry = tk.Entry(self)
        self.button = tk.Button(self, text="Get", command=self.on_button)
        self.button.pack()
        self.entry.pack()

    def on_button(self):
        value = float(self.entry.get())
        print (value*2)

app = SampleApp()
app.mainloop()

输入=5

我在按下 1 个按钮后得到的输出(不是预期的)

按下 2 次按钮后(虽然我希望在此阶段有 2 个值,但我不希望同时出现 2 个值)

10

10

按下 3 次按钮后(预期)

10

10

10

按下 4 次按钮后(预期)

10

10

10

10

搜索了一段时间的答案后,令人恼火的是答案在我 post 之后自动显示出来。找到答案 here。虽然我不确定我是否理解,但第一次打印不会触发 stdout 刷新。手动解决方法在 link 或以下

import sys

def on_button(self):
    value = float(self.entry.get())
    print (value*2)
    sys.stdout.flush() #place this after the print statement