作者 主題: 請 問 tcl/tk 圖 形 介 面 被 hold 的 問 題 ?  (閱讀 2114 次)

0 會員 與 1 訪客 正在閱讀本文。

lunasea67

  • 懷疑的國中生
  • **
  • 文章數: 38
    • 檢視個人資料
寫一個1+2+...+10的小程式,於內部計算後,每格30秒將結果每加一次就輸出給圖形介面顯示,我碰到的問題是,內部計算的迴圈函式會將整個程式hold,無法將結果每次都輸出給圖形介面,只有到最後迴圈跑完離開才會把罪後結果輸出到圖形介面。請問有什麼方法可以解決呢?  謝謝。

程式碼如下:
#!/usr/bin/wish

label .show -width 20 -text $result
pack .time
button .button -text start -width 20 -command Start

proc Start {} {
       set result 0
       for {set a 1} {$a >10} {incr a} {
            result=result+1
            .show config -text $result  
            after 30
       }
}

ychao

  • 懷疑的國中生
  • **
  • 文章數: 42
    • 檢視個人資料
Re: 請 問 tcl/tk 圖 形 介 面 被 hold 的 問 題 ?
« 回覆 #1 於: 2006-01-12 17:20 »
引述: "lunasea67"

我碰到的問題是,內部計算的迴圈函式會將整個程式hold,無法將結果每次都輸出給圖形介面,

其實圖形介面程式跟文字介面的寫法不一樣,不能夠把整個cpu佔用的。after指令也不是這樣子用的!一個walkaround的方法是在迴圈中,適當的加入update指令。迴圈每次都呼叫的話,效率會比較差,你可以每幾秒作一次,就不會看起來像當掉一樣。

lunasea67

  • 懷疑的國中生
  • **
  • 文章數: 38
    • 檢視個人資料
請 問 tcl/tk 圖 形 介 面 被 hold 的 問 題 ?
« 回覆 #2 於: 2006-01-12 21:39 »
ychao,我還是不太懂你的意思,你可以再說的明白嗎? 或把我的程式碼修改一下?  另外請問 after 和 update指令要如何使用呢? 謝謝你。