2012-02-28 12 views
1

私のgoogle-fuは失敗しました。 Panel()に追加したウィジェットを削除するにはどうすればよいですか?たとえば、以下では、controls -panelをもう一度空にします。WxHaskellパネルからウィジェットを削除するには

buildGUI = do 
    f <- frame [ text := "Hello" ] 

    controls <- panel f [] 
    ctext <- staticText controls [ text := "Foo" ] 
    set controls [ layout := margin 5 (widget ctext) ] 

    set f [ layout := widget controls ] 
    {- delete ctext ? How? -} 
    return() 

(私は動的GUIを構築しようとしています。私は古いコントロールを更新する必要があります)。

+0

'visible'属性を試しましたか? – bzn

答えて

1

レイアウトから表示したり削除したりすることができます。これは実際には削除されませんが、UIを動的に変更します:

import Graphics.UI.WX 

buildGUI = do 
    f <- frame [ text := "Hello" ] 

    controls <- panel f [] 
    ctext <- staticText controls [ text := "Foo" ] 
    butn <- button controls [text := "Remove the Foo"]  -- I've added a button to remove Foo 
    set controls [ layout := row 0 [margin 5 (widget ctext), 
            margin 5 (widget butn) ]] 

    set f [ layout := widget controls ] 

    set butn [on command := do 
     set ctext [visible := False]       -- so ctext doesn't show 
     set controls [layout := margin 5 (widget butn) ]]  -- so ctext doesn't take up space 
    return() 

main = start buildGUI 
関連する問題