【问题标题】:Problems with scrolling in TextView in Gtk2hs and HaskellGtk2hs 和 Haskell 中 TextView 的滚动问题
【发布时间】:2009-06-27 23:55:48
【问题描述】:

我正在编写我的第一个 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

【问题讨论】:

  • Glade XML 是否足够小,可以包含在此处?
  • 编辑链接到林间空地文件,粘贴。

标签: haskell gtk2hs


【解决方案1】:

在 gtk2hs 邮件列表上与 Axel 交谈后,我设法解决了自己的问题。

TextView 被设计成可以是单行文本,也可以是带有滚动条的多行 TextView。如果您想要滚动功能,则必须将 TextView 放入滚动窗口中。我通过将 TextView 放入滚动窗口解决了我的问题,它现在可以正常工作了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-31
    • 2011-04-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多