使用 reflex-gi-gtk-0.2.0.0 时,我可以从事件中访问动态:
submitButtonE4 <- eventOnSignal submitButton #clicked
(
do
let processDyn dynCompany = do
case dynCompany of
Just company -> do
path <- chartAnnualROA company fileOptions800x600 --generateChart company
Gtk.imageClear chartImage
Gtk.set chartImage [#file := T.pack defaultReportPath]
--return x -- path
case T.null $ T.pack path of
True -> return "" --dynCompany
Nothing -> return "" -- dynCompany
return $ ffor maybeCompanyDyn processDyn
>>= )
但是为了进行评估,我需要将它绑定到一个标签:
sink submitClickStatusLabel [#label :== ffor submitButtonE4 (T.pack . show)]
它不像Dynamic (SpiderTimeline x) (IO (Maybe Company))
.
因此,我必须去获取动态绑定到的信息:
(
do
name <- Gtk.get companyCboxBoxEntryWidget #text
case Map.lookup name companyMap of
Just company -> do
path <- chartAnnualROA company fileOptions800x600 --generateChart company
Gtk.imageClear chartImage
Gtk.set chartImage [#file := T.pack defaultReportPath]
return path
Nothing -> return "../investingRIO/src/Data/Reports/initialChart.svg"
>>= )
现在我可以下沉它并引起评估。
sink submitClickStatusLabel [#label :== ffor submitButtonE (T.pack . show)]
使用第一种方法时,我找不到任何强制评估的方法。如何在不陷入另一个小部件的情况下强制评估?
谢谢