문제

첫 번째 GTK2HS+Glade 응용 프로그램을 작성하고 있으며 TextView를 사용하여 프로그램에서 출력을 표시합니다. 기본 동작이라고 생각한 스크롤 대신 텍스트가 텍스트를 다시 설정할 때마다 텍스트 뷰가 커지고 사라질 때까지 아래 버튼을 더 작게 만듭니다. 스크롤하기 위해 특별한 일을해야합니까? 여기에 내가 사용하고있는 주요 기능은 다음과 같습니다. 더러운 코드를 용서하십시오. :)

main :: FilePath -> IO ()
main gladepath = do
initGUI
-- Create inital game state
st <- newIORef (State "" "" "" 0 0 0)
-- Get handles to all needed widgets from Glade file
Just xml <- xmlNew gladepath
mw     <- xmlGetWidget xml castToWindow "mainWindow"
sw     <- xmlGetWidget xml castToWindow "window2"
mb     <- xmlGetWidget xml castToButton "fireButton"
ng     <- xmlGetWidget xml castToButton "nbutton"
mv     <- xmlGetWidget xml castToTextView "textview1"
but    <- xmlGetWidget xml castToButton "button1"
ab     <- xmlGetWidget xml castToAboutDialog "aboutdialog1"
menu   <- xmlGetWidget xml castToMenuItem "menuitem3"
about  <- xmlGetWidget xml castToMenuItem "imagemenuitem10"
quitb  <- xmlGetWidget xml castToMenuItem "menuitem3"
p1name <- xmlGetWidget xml castToEntry "entry1"
p2name <- xmlGetWidget xml castToEntry "entry2"
spin   <- xmlGetWidget xml castToSpinButton "spinbutton1"
sett   <- xmlGetWidget xml castToMenuItem "menuitem2"
p1lab  <- xmlGetWidget xml castToLabel "label4"
p2lab  <- xmlGetWidget xml castToLabel "label5"
cylab  <- xmlGetWidget xml castToLabel "label6"
-- Handle events and such
buff <- textViewGetBuffer mv
onActivateLeaf quitb mainQuit
onResponse ab $ \resp -> 
   case resp of
      ResponseClose -> widgetHide ab
      _             -> widgetHide ab
onActivateLeaf about $ widgetShow ab
onActivateLeaf sett  $ widgetShowAll sw
onDelete sw $ \_ -> widgetHide sw >> return True
onClicked but $ 
          initalize sw p1name p2name spin st p1lab p2lab cylab buff
onClicked ng $ widgetShowAll sw
onDelete ab $ \_ -> widgetHide ab >> return True
onClicked mb $ fireButton st sw buff cylab
onActivateLeaf menu $ widgetDestroy mw
onDestroy mw mainQuit
widgetShowAll mw
mainGUI

다른 것이 필요한 경우 의견으로 요청하십시오. 다른 것을 제공 해야하는지 확실하지 않습니다.

Glade 파일은 여기에 표시하기에는 너무 크지 만 누군가가 필요로하는 경우 여기에 붙여 넣었습니다. http://hpaste.org/fastcgi/hpaste.fcgi/view?id=6310#a6310

도움이 되었습니까?

해결책

GTK2HS 메일 링리스트에서 Axel과 대화 한 후 내 자신의 문제를 해결했습니다.

TextViews는 단일 줄의 텍스트 또는 스크롤 막대가있는 멀티 라인 텍스트 뷰가 될 수 있도록 설계되었습니다. 스크롤 기능을 원한다면 TextView를 스크롤 된 창에 넣어야합니다. 텍스트 뷰를 스크롤 된 창에 배치하여 문제를 해결했습니다. 이제 완벽하게 작동합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top