我正在写我的第一gtk2hs +林间空地应用程序,我使用一个TextView显示从程序的输出。而是滚动的,我认为应该是默认行为,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

如果您有什么需要,请在注释提出要求。我不知道我是否需要提供其他任何东西。

在林间空地文件太大,在这里显示,不过我贴在这里万一有人需要它:的 http://hpaste.org/fastcgi/hpaste.fcgi/view?id=6310#a6310

有帮助吗?

解决方案

我已经成功的gtk2hs邮件列表与阿克塞尔后说,解决我自己的问题。

TextViews被设计为使得它们可以是文本的一行,或者与滚动条的多TextView的。如果你想滚动功能,你必须把TextView的成滚动窗口。我通过把我的TextView成滚动窗口解决我的问题,它完美的作品了。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top