2013-02-21 3 views
1

WxHaskell과 gtk2hs를 설치 한 후 둘 중 어느 것을 선택해야할지 고민 중입니다. WxHaskell을 위해서 나는 WxHaskell at haskell.org에있는 문서를 작업하고있다.wxHaskell : 초기 프레임 크기가 너무 작습니다.

-- 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: Adding duplicate image handler for 'PNG file' 

을 코드에 대해 다음과 같은

Debug: wxColour::Set - couldn't set to colour string 'MEDIUM GREY' 

라인 없다면 다음 첫 번째 예는 "빠른 시작" 섹션입니다 GHCi에 벌금을 부과하고 잘로드합니다. 그러나 을 실행할 때 나타나는 창에는 높이가 0인데, 버튼을 포함하도록 수동으로 창의 크기를 조정하지 않으면 창의 맨 위 막대 만 보입니다. 이것은 GHCi로 컴파일하고로드 할 때 발생합니다. GHCi에서 주초 및 다음 시간을 실행할 때 높이가 정확합니다. GHCi 세션을 닫고 다시 시작하면 aagin은 "평평"하게되며 첫 번째 통화는 버튼에 포함되지 않고 다음 통화에서는 올바르게 표시됩니다. 코드를 컴파일하고 GHCi 밖에서 실행하면 창은 항상 평평합니다.

버그입니까? 아니면 오래된 튜토리얼입니까 아니면 다른 것이 있습니까? 위의 설명에서

+0

문제 :

예를 들어, 당신은 상자 풀칠을 사용할 수 있습니다 http://www.haskell.org/haskellwiki/WxHaskell/FAQ – stusmith

+0

아니면 의미 않는 창문은 항상 너무 작습니까? 그렇다면'minsize' 레이아웃을 추가 할 수 있습니다. – stusmith

+0

GHCi와 GHC로 코드를 컴파일하는 경우 모두 발생합니다. 연결된 예제 디스플레이의 스크린 샷과 동일한 동작을 기대하고있었습니다. 명시 적 크기 조정 추가 예. clientSize : = sz 150 100에 따라 창 크기가 조정되지만 나중에 실제 코드가 GUI 요소의 크기를 암시 적으로 처리하는 것이 좋습니다. –

답변

3

, 이것은 아마 당신이 원하는 것이 아니라 참조 ...

대신 최소 크기를 설정할 수 있습니다 크기 설정 :

set f [layout := minsize (sz 300 200) $ widget quit] 
1

당신을 이 작업은 C++에서 wxWidgets을 사용하는 것과 같은 방식으로 수행 할 수 있습니다. wxHaskell 및 GHCi와

이 알려져있다
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()