[問題] 有關圖形界面的問題

看板Python作者 (朱子)時間17年前 (2007/11/13 00:03), 編輯推噓3(300)
留言3則, 2人參與, 最新討論串1/1
我想要寫一支程式,包涵: 1.一個主要的迴圈,例如倒數計時 2.一個圖形介面,包涵: 1.一個狀態欄,可以即時的顯示迴圈的進度 2.一個start的按鈕,程式執行時先顯示視窗,當我按下start才開始跑迴圈 3.一個stop的按鈕,可以隨時停止迴圈,並顯示最後的狀態 我用Tkinter來寫,碰到幾個問題 1.一開始我把迴圈和視窗寫在一起,就遇到一個問題: 當我開始跑迴圈時,即使我在迴圈中改變widget裡面的變數,視窗也不會馬上更新 要等到整個迴圈跑完,才會更新成最後的值 而且在跑迴圈的過程中視窗的按鈕都變成沒反應 我的解決方法是把迴圈和視窗分二個thread去跑,請問這樣的方式是正確的嗎 2.這樣一來就產生第二個問題,我沒辦法透過我的視窗去中止正在跑迴圈的thread 我上網查到的解決方法是在每一圈開頭去檢查一個變數的值(0/1或T/F) 然後我想停止迴圈時,只要改變這個變數,程式就會在下一圈跳出 那如果我的迴圈又分成好幾個step 例如 while 1: step 1 step 2 step 3 而我希望我在其中任何一個step都可以把它停下來,不用等到整圈跑完 我是不是就要寫成 while 1: if halt==1: break else: step 1 if halt==1: break else: step 2 ...... 這樣感覺好長喔…有沒有更好的方法呢? 感謝大家看完我的問題 如果我有那些不好的做法也請告訴我 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.213.158 ※ 編輯: mantour 來自: 140.112.213.158 (11/13 00:10)

11/15 02:49, , 1F
GUI 程式不是這樣寫的,請參考 event loop 的原理
11/15 02:49, 1F

11/15 09:28, , 2F
謝謝 我去找資料來看看
11/15 09:28, 2F

11/16 00:17, , 3F
再看了一下,我覺得你的程式大概是有 bug
11/16 00:17, 3F
文章代碼(AID): #17E7bIje (Python)
文章代碼(AID): #17E7bIje (Python)