Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Tkinter-仅在第二次执行后返回_Python_Tkinter_Ipython Notebook - Fatal编程技术网

Python Tkinter-仅在第二次执行后返回

Python Tkinter-仅在第二次执行后返回,python,tkinter,ipython-notebook,Python,Tkinter,Ipython Notebook,我在Tkinkter中有一个非常简单的应用程序。我在Ipython笔记本上运行它 问题是,每当我运行应用程序并按下“获取”按钮一次时,都不会返回任何内容。我再次按下按钮,返回两个值。我按按钮3次或更多次,每次按按钮时返回1个值。问题在于第一次按下按钮。有什么事我不明白 from tkinter import * from tkinter import ttk, Tk class SampleApp(tk.Tk): def __init__(self): tk.Tk._

我在Tkinkter中有一个非常简单的应用程序。我在Ipython笔记本上运行它

问题是,每当我运行应用程序并按下“获取”按钮一次时,都不会返回任何内容。我再次按下按钮,返回两个值。我按按钮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个按钮后获得的输出(不需要)

没什么

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

十,

十,

按下3次按钮后(预计)

十,

十,

十,

按下4次按钮后(预计)

十,

十,

十,


10

在搜索了一段时间的答案后,令人恼火的是,就在我发帖之后,答案又露了出来。找到了答案。虽然我不确定我是否理解,但第一次打印并不会触发标准输出的刷新。手动解决方法位于链接或下面

import sys

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

更正缩进和名称空间问题,以便实际运行,我看不到您所描述的不需要的行为。请尝试使用普通python编写代码-而不是
IPython Notebook
-并查看其工作原理。如果没有问题,那么问题是
IPython笔记本
code对我来说适用于Python 3.5(在我将
从tkinter导入*
更改为
将tkinter作为tk导入
之后),我仍然看不到您描述的延迟。您确定了它为什么在您的设置中执行此操作吗?(另外,您还可以将
flush=True
添加到
print
调用中,以刷新输出,而无需弄乱
sys
),这会更干净、更好,谢谢。这似乎是因为代码仍在运行。