如何在gtk2hs中依次显示标签或其他显示小部件中的单词



我需要按顺序表示标签(或其他显示类型的小部件)中的单词

,使用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

我认为,当我按下按钮时,它应该在label中显示"一",等待1秒,显示"二",等待一秒钟,然后显示"三"。但是在我按下按钮2秒钟后,这只在label中显示"三"。

我也尝试了Statusbar,它给出了相同的结果。

第页。S.:也许是窗户特有的?

第页。P.S.:gtk2hs为0.12.4

解决方案是运行新线程!

我们需要将forkIO放入onPressed:的主体中

onPressed but $ do
    forkIO $ do
        set lab [labelText:="one"]
        threadDelay 1000000
        set lab [labelText:="two"]
        threadDelay 1000000
        set lab [labelText:="three"]
    return()

它现在运行良好!

最新更新