2011-08-24 14 views
0

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

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

谢谢 - 布拉德

回答

1

由马克·鲁茨见于书“编程的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)) 

这个工作。

0

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

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

(我不知道PycURL,所以如果道歉会使一切都清楚)

+0

Matt-我想在功能运行时显示文本。功能POST能量数据并且应该运行多年,或者只要硬件工作。在功能结束后,我已经能够显示文本,但是这会破坏实时状态更新。 – Verohomie

+0

我发现http://stackoverflow.com/questions/5048082,但我不认为队列将处理这个问题的实时性。我也发现http://stackoverflow.com/questions/6588141但@msw写道,他知道没有已知的解决方案。 – Verohomie

+0

马特 - 我想出了使用线程和队列。谢谢 – Verohomie

相关问题