Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.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_Text_Tkinter_Real Time - Fatal编程技术网

Python 按钮命令调用函数后在Tkinter中显示实时文本?

Python 按钮命令调用函数后在Tkinter中显示实时文本?,python,text,tkinter,real-time,Python,Text,Tkinter,Real Time,我试图在按钮命令调用函数后在Tkinter中显示实时文本。当PycURL接收到“HTTP/1.1200ok”时,函数应该显示一个“timestamp”。该功能每2分钟向服务器发送一次能源数据 伪代码,一个基本的例子,和/或一般性的讨论应该让我朝着正确的方向前进。我已经把能源数据发布好了。现在我需要让GUI正常工作 谢谢-Brad在按钮调用某个函数后,您如何尝试在Tkinter中显示实时文本?到目前为止,我得到的是,用户按下按钮,函数启动,每两分钟向服务器发布一些数据,并尝试在每次发布后的某个地方

我试图在按钮命令调用函数后在Tkinter中显示实时文本。当PycURL接收到“HTTP/1.1200ok”时,函数应该显示一个“timestamp”。该功能每2分钟向服务器发送一次能源数据

伪代码,一个基本的例子,和/或一般性的讨论应该让我朝着正确的方向前进。我已经把能源数据发布好了。现在我需要让GUI正常工作


谢谢-Brad

在按钮调用某个函数后,您如何尝试在Tkinter中显示实时文本?到目前为止,我得到的是,用户按下按钮,函数启动,每两分钟向服务器发布一些数据,并尝试在每次发布后的某个地方显示一些文本,但有问题吗

它是如何显示文本的,有什么问题吗


(我不知道PycURL,如果这能让一切都清楚的话,我深表歉意)

在Mark Lutz的《Python编程》一书中找到了答案。下面的代码是使用来自线程和队列的信息从书中改编而来的

    import thread, Queue, time, random, poster
    from Tkinter import *

    dataQueue = Queue.Queue()

    def status(t):
        try:
            data = dataQueue.get(block=False)
        except Queue.Empty:
            pass
        else:
            t.delete('0', END)
            t.insert('0', '%s\n' % str(data))
        t.after(250, lambda: status(t))

    def makethread():
        thread.start_new_thread(poster.poster, (1,dataQueue))    

    if __name__ == '__main__':
        root = Tk()
        root.geometry("240x45")
        t = Entry(root)
        t.pack(side=TOP, fill=X)
        Button(root, text='Start Epoch Display',
                command=makethread).pack(side=BOTTOM, fill=X)
        status(t)
        root.mainloop()
在另一个叫做海报的文件中

    import random, time

    def poster(id,que):
        while True:
            delay=random.uniform(0.1, .11)
            time.sleep(delay)
            que.put(' epoch=%f, delay=%f' % (time.time(), delay))

这起作用。

Matt-我想在函数运行时显示文本。该功能发布能源数据,并应运行数年,或只要硬件工作。我已经能够在函数结束后显示文本,但这会破坏实时状态更新。我发现,但我认为队列无法处理此问题的实时性。我还发现,但@msw写道,他不知道已知的解决方案。