2012-05-13 9 views
1

フレーム全体を埋めるためにテキストエントリを埋めようとしていますが、エントリがフレームに直接配置されていればうまく動作しますが、パネルに配置されるとデフォルトに戻りますサイズ。また、ボックス化されたレイアウトコンビネータのテキストも消えます。私は間違って何をしていますか?wxhaskellのレイアウトコンビネータ

import Graphics.UI.WX 

main = start gui 

gui = do 
    f <- frame [] 
    p <- panel f [] 
    xcoord <- entry p [] 
    ycoord <- entry p [] 
    set p [layout := fill $ boxed "foo" $ 
     grid 5 5 [ 
      [floatRight $ label "x coordinate", hfill $ widget xcoord] 
     , [floatRight $ label "y coordinate", hfill $ widget ycoord] 
     ] 
    ] 
    set f [layout := fill $ container p glue] 

答えて

2

あなたはset p [layout := ...文でのpのレイアウトを指定し、その後container p glue使用にそれを捨てています。

containerの2番目のパラメータは、コンテナのレイアウトであるglueレイアウトではなく、パネルのための賢明なものです。。)

あなたはどちらか(最も簡単)このようなwidget pcontainer p glueを交換する必要があります。

import Graphics.UI.WX 

main = start gui 

gui = do 
    f <- frame [] 
    p <- panel f [] 
    xcoord <- entry p [] 
    ycoord <- entry p [] 
    set p [layout := boxed "foo" $ 
     grid 5 5 [ 
      [floatRight $ label "x coordinate", hfill $ widget xcoord] 
     , [floatRight $ label "y coordinate", hfill $ widget ycoord] 
     ] 
    ] 
    set f [layout := fill $ widget p] 

または末尾のコンテナexpresssionにすべてのあなたのレイアウトコードを移動:

import Graphics.UI.WX 

main = start gui 

gui = do 
    f <- frame [] 
    p <- panel f [] 
    xcoord <- entry p [] 
    ycoord <- entry p [] 
    set f [layout := fill $ container p $ boxed "foo" $ 
     grid 5 5 [ 
      [floatRight $ label "x coordinate", hfill $ widget xcoord] 
     , [floatRight $ label "y coordinate", hfill $ widget ycoord] 
     ]] 

しかし私は最初の方が好きです。なぜなら、それは私にとってはより清潔で、あなたのメインフレームfにもっと多くのものを追加する方が簡単だからです。

関連する問題