3

我正在尝试构建一个简单的 UI 作为学习 wxHaskell 和 Reactive Banana 的练习,但我在尝试解决一个看似简单的问题时遇到了困难。具体来说,我想在标签的文本更新时调整窗口大小以适应标签,使其始终适合文本。我尝试使用 来完成此操作windowReLayoutMinimal,但这出乎意料地导致窗口在文本溢出时无法调整大小,并且在手动调整大小时窗口在其原始大小和新大小之间闪烁(即用句柄拉伸它角落)。据我所知,StaticText当文本更改时,项目的大小无法更新。有没有办法强制项目重新计算其最小尺寸?我的代码如下所示:

{-# LANGUAGE ScopedTypeVariables #-}
import Graphics.UI.WX hiding (Event)
import Reactive.Banana
import Reactive.Banana.WX

main = start $ do
    mainWindow      <- frame [text := "Test"]
    inputText   <- textEntry mainWindow []
    outputText  <- staticText mainWindow []
    set mainWindow  [layout :=
                      margin 10 $
                      grid 10 10 [
                        [widget inputText, fill $ valignCenter $ widget outputText]
                      ]
                    ]
    let
        networkDescription :: forall t . Frameworks t => Moment t ()
        networkDescription = do
            inputTextEvStream <- eventText inputText
            let 
                currentInputText = stepper "" inputTextEvStream
            sink outputText [text :== currentInputText]
            reactimate $ windowReLayoutMinimal mainWindow <$ inputTextEvStream
    network <- compile networkDescription
    actuate network
4

0 回答 0