gpt4 book ai didi

haskell - gtk2hs:删除小部件后请求重新计算窗口大小

转载 作者:行者123 更新时间:2023-12-04 20:55:41 25 4
gpt4 key购买 nike

我有一个包含三个条目小部件和一个按钮的窗口。我使用按钮以编程方式删除其中一个小部件。问题是主窗口在删除后不会更改其大小以适应新布局。

我可以想象我需要向主循环发送一些信号或事件,这会导致重新计算,但我一直找不到这样的功能。

下面是一些示例代码:

import Graphics.UI.Gtk
import Data.IORef
import qualified Graphics.UI.Gtk as G hiding (Point)
import qualified Graphics.UI.Gtk.Gdk.EventM as E
import qualified Graphics.UI.Gtk.Abstract.Widget as W
import qualified Graphics.Rendering.Cairo as C


makeEntry :: String -> IO Entry
makeEntry str = do e <- entryNew
entrySetText e str
return e

main :: IO ()
main = do
initGUI
window <- windowNew
box <- vBoxNew False 0
G.on window G.keyPressEvent $ E.tryEvent $ do
"Escape" <- E.eventKeyName
C.liftIO $ G.widgetDestroy window

set window [ containerChild := box ]

e1 <- makeEntry "e1"
boxPackStart box e1 PackNatural 0

e2 <- makeEntry "e2"
boxPackStart box e2 PackNatural 0

e3 <- makeEntry "e3"
boxPackStart box e3 PackNatural 0

button <- buttonNew
set button [ buttonLabel := "Remove" ]
boxPackStart box button PackNatural 0

onClicked button (containerRemove box e2)
onDestroy window mainQuit
widgetShowAll window
mainGUI

最佳答案

你可以询问你的顶层窗口它想要多大,然后让它那么大:

refresh window = do
Requisition w h <- widgetSizeRequest window
windowResize window w h

要使用它,请将其粘贴到按钮的点击处理程序中:

onClicked button (containerRemove box e2 >> refresh window)

关于haskell - gtk2hs:删除小部件后请求重新计算窗口大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6915794/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com