在安装了WxHaskell和gtk2hs之后,我正在与两者一起玩,以确定它们中的哪一个可以选择。对于WxHaskell,我正在研究WxHaskell at haskell.org的文档。以下第一个示例来自“快速启动”部分:
-- Copied from www.haskell.org/haskellwiki/WxHaskell/Quick_start
module Main where
import Graphics.UI.WX
main :: IO ()
main
= start hello
hello :: IO ()
hello
= do f <- frame [text := "Hello!"]
quit <- button f [text := "Quit", on command := close f]
set f [layout := widget quit]禁闭
Debug: wxColour::Set - couldn't set to colour string 'MEDIUM GREY'和类似于以下不同图像文件格式的行
Debug: Adding duplicate image handler for 'PNG file'该代码编译精细,并将其加载到GHCi中。但是,运行时出现的窗口的高度为零,只有窗口的顶部条是可见的,而无需手动调整窗口大小以包括按钮。这在编译和加载到GHCi时都会发生。在GHCi中,当执行main的第二次和以后的任何时间时,高度将是正确的。如果我关闭并重新启动一个GHCi会话,将会是“平面的”,并且在第一次调用main时不包括按钮,但是在下面的任何调用中都是正确的。当编译代码并在GHCi外部运行时,窗口总是平坦的。
这是一个错误,还是本教程过时了,还是其他我遗漏的东西?
发布于 2013-02-22 11:59:16
从你上面的评论来看,这可能不是你想要的,但作为参考.
您可以设置最小大小,而不是设置大小:
set f [layout := minsize (sz 300 200) $ widget quit]发布于 2014-04-19 02:32:39
您可以以在C++中使用C++(即布局)的方式进行此操作。
例如,您可以使用方框式筛选器:
module Main where
import Data.Bits
import Graphics.UI.WX
import Graphics.UI.WXCore.WxcDefs
import Graphics.UI.WXCore.Frame
import Graphics.UI.WXCore.WxcClassesAL
import Graphics.UI.WXCore.WxcClassesMZ
import Graphics.UI.WXCore.WxcTypes
main :: IO ()
main = start simple
simple :: IO ()
simple = do
hbox <- boxSizerCreate wxHORIZONTAL
window <- frame [text := "Title"]
quitButton <- button window [text := "Quit", on command := close window]
exitButton <- button window [text := "Exit", on command := close window]
windowSetSizer window hbox
sizerAddWindow hbox exitButton 1 (wxEXPAND .|. wxALL) 5 ptrNull
sizerAddWindow hbox quitButton 1 (wxEXPAND .|. wxALL) 5 ptrNull
frameCenter window
return ()https://stackoverflow.com/questions/15001883
复制相似问题