Ich schreibe meine erste gtk2hs + Glade-Anwendung, und ich verwende eine Textansicht, um die Ausgabe aus dem Programm anzuzeigen. Anstatt zu scrollen, was ich für das Standardverhalten halten sollte, wird die Textansicht immer größer, wenn ich den Text neu setze, und meine Schaltflächen werden kleiner, bis sie verschwinden, aber die Bildlaufleisten erscheinen nie und es scrollt nie. Soll ich etwas Besonderes machen, um es zu scrollen? Hier ist die Hauptfunktion, die ich im Moment verwende, verzeih den schmutzigen Code, ich beabsichtige, später sauber zu machen. :)Probleme mit dem Scrollen in TextView in Gtk2hs und Haskell
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
Wenn Sie noch etwas benötigen, bitte fordern Sie es in einem Kommentar. Ich bin mir nicht sicher, ob ich etwas anderes zur Verfügung stellen muss.
Die Lichtung Datei ist zu groß, um hier zu zeigen, aber ich klebte es hier, wenn es jemand braucht: http://hpaste.org/fastcgi/hpaste.fcgi/view?id=6310#a6310
Ist die Glade-XML klein genug, um sie hier einzubeziehen? – ephemient
Bearbeitet, um auf die Lichtung Datei zu verlinken, eingefügt. – Rayne