我試圖在Button命令調用函數後在Tkinter中顯示實時文本。當PycURL收到「HTTP/1.1 200 OK」時,該函數應顯示「時間戳」。該功能每2分鐘將能量數據POST到服務器。在Button命令調用函數後在Tkinter中顯示實時文本?
僞代碼,一個基本的例子,和/或一般的討論應該讓我朝着正確的方向前進。我有能源數據發佈確定。現在我需要讓GUI工作。
謝謝 - 布拉德
我試圖在Button命令調用函數後在Tkinter中顯示實時文本。當PycURL收到「HTTP/1.1 200 OK」時,該函數應顯示「時間戳」。該功能每2分鐘將能量數據POST到服務器。在Button命令調用函數後在Tkinter中顯示實時文本?
僞代碼,一個基本的例子,和/或一般的討論應該讓我朝着正確的方向前進。我有能源數據發佈確定。現在我需要讓GUI工作。
謝謝 - 布拉德
由馬克·魯茨見於書「編程的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))
這個工作。
你如何試圖在一個按鈕調用函數中的Tkinter顯示實時文本?到目前爲止,我得到的是,用戶按下按鈕,函數啓動,每兩分鐘將一些數據發佈到服務器,並嘗試在每個帖子後的某處顯示一些文本,但是有問題?
它如何嘗試顯示文本,以及有什麼問題?
(我不知道PycURL,所以如果道歉會使一切都清楚)
Matt-我想在功能運行時顯示文本。功能POST能量數據並且應該運行多年,或者只要硬件工作。在功能結束後,我已經能夠顯示文本,但是這會破壞實時狀態更新。 – Verohomie
我發現http://stackoverflow.com/questions/5048082,但我不認爲隊列將處理這個問題的實時性。我也發現http://stackoverflow.com/questions/6588141但@msw寫道,他知道沒有已知的解決方案。 – Verohomie
馬特 - 我想出了使用線程和隊列。謝謝 – Verohomie