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

时间:2011-08-24 20:49:08

标签: python text tkinter real-time

我试图在Button命令调用函数后在Tkinter中显示实时文本。当PycURL收到“HTTP / 1.1 200 OK”时,该功能应显示“时间戳”。该功能每2分钟将能量数据发送到服务器。

伪代码,一个基本的例子,和/或一般的讨论应该让我朝着正确的方向前进。我有能量数据POSTing OK。现在我需要让GUI工作。

谢谢 - 布拉德

2 个答案:

答案 0 :(得分:1)

在Mark Lutz的“Programming 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()

在另一个名为poster

的文件中
    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))

这很有用。

答案 1 :(得分:0)

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

它如何尝试显示文本,以及问题是什么?

(我不知道PycURL,如果能让一切变得清晰,那就道歉了)