我需要按顺序表示标签中的单词(或其他显示类型小部件)
,使用 gtk2hs 。
我试过了:
import Graphics.UI.Gtk
import Control.Concurrent
main = do
initGUI
window <- windowNew
window `onDestroy` mainQuit
lay <- vBoxNew False 0
but <-buttonNewWithLabel "Sequently show one, two and three"
lab <- labelNew Nothing
onPressed but $ do
labelSetText lab "one"
threadDelay 1000000
labelSetText lab "two"
threadDelay 1000000
labelSetText lab "three"
containerAdd window lay
containerAdd lay but
containerAdd lay lab
widgetShowAll window
onDestroy window mainQuit
mainGUI
我认为,它应该显示&#34;一个&#34;在label
中,等待1秒钟,显示&#34;两个&#34;,等待一秒钟,然后显示&#34;三个&#34;,当我按下按钮时。
但这只会显示&#34;三&#34;在按下按钮2秒后,在label
中。
我也试过Statusbar
,结果相同。
P上。 S。:也许它是特定于Windows的?
P上。 P. S。:gtk2hs是0.12.4
答案 0 :(得分:0)
解决方案是运行新线程!
我们需要将forkIO
放在onPressed
:
onPressed but $ do
forkIO $ do
set lab [labelText:="one"]
threadDelay 1000000
set lab [labelText:="two"]
threadDelay 1000000
set lab [labelText:="three"]
return()
现在工作正常!