我使用Tkinter創建了一個小時間管理工具,這樣我就可以繼續工作。我遇到了一個我看起來無法工作的問題。我正在使用錯誤框,以便它顯示在所有其他窗口的前面。我怎樣才能同時產生多個tkMessageBox.showerror?
現在,程序在一個函數上啓動一個新線程,該函數會跟蹤時間,並將其與用戶輸入任務的時間進行比較。一旦實時>用戶輸入的時間,它會啓動另一個線程來產生tkMessageBox。我已經嘗試過這種方法,但不啓動一個新的線程來產生tkMessageBox,問題是一樣的。如果用戶輸入2個單獨任務的同一時間,則彈出的錯誤會凍結。我在查找有關此主題的信息時遇到了困難...這種行爲很奇怪,因爲如果我有2個提醒,讓我們說1在0600和一個在0601,但我不關閉彈出的第一個錯誤框並讓它直到第二次警報觸發爲止,第二次警報將會取代第一次警報(如果可能,我想要彈出多個錯誤框)。只有具有相同觸發時間的警報纔會導致彈出窗口凍結。
這是我的第一個GUI程序,在過去24小時內纔開始學習線程和GUI的概念,所以我不確定這是線程還是tkMessageBox的問題。由於錯誤框的行爲,我認爲它是與tkMessageBox模塊組合的線程模塊。我使用的命令是:
tkMessageBox.showerror('TIMER ALERT!!!', comp_msg)
Here is the source我擺在那裏的意見,以幫助。我說的tkMessageBox是56行。
我想我不確定我是否可以做我想用彈出框做的事情,如果可以的話,我不知道如何。如果我不能,是否有另一種方法用Tkinter產生多個錯誤類型的彈出框?我只想讓多個盒子能夠在任何給定時間出現。
在此先感謝,我非常感謝所有幫助。
編輯:
import thread
from Tkinter import *
#Spawns Error Box. Runs in it's own thread.
def message_box(comp_msg,q): # q is an empty string because of thread module.
print "Spawning Error Box..."
eb =Toplevel()
eb.config(master=None,bg="red")
pop_l = Label(eb,text="ALERT!!!")
pop_l2=Label(eb,text=comp_msg)
pop_l.pack(pady=10,padx=10)
pop_l2.pack(pady=15,padx=10)
return eb
thread.start_new_thread(message_box,(comp_msg,""))
謝謝你farzad!在編程方面,我更像是一個業餘愛好者,所以當涉及到Tkinter的課程時,它就會超出我的想象。無論如何,我正在看它,看看我能否弄清楚。因爲我以前從來沒有用過它們,所以我只是很難上課。再次感謝你! – DuckPuncher
不客氣。我添加了一個示例代碼,以便您可以將它用作應用程序的基礎。 – farzad
不要怕類。通過真正開始編碼,你已經完成了最艱難的任務。你可以很容易地瞭解所有這些,Python是一種清晰的學習/編程的愉快語言。每當你有問題時,你都知道在哪裏問。;) – farzad