我已经使用glade创建了窗口、ComboBox、按钮和代码如下:
module Main where
import Graphics.UI.Gtk
import Graphics.UI.Gtk.Glade
main = do
initGUI
Just xml <- xmlNew "Tp.glade"
window <- xmlGetWidget xml castToWindow "window1"
button <- xmlGetWidget xml castToButton "button1"
comboBox <- xmlGetWidget xml castToComboBox "combobox1"
onClicked button $ do
putStrLn $ "Apply button selected "
selected <- comboBoxGetActiveText comboBox
print selected
onDestroy window mainQuit
widgetShowAll window
mainGUI如果我从tk\MenuComboToolbar\ComboBox.chs.pp:244:2-13)中选择一个选项并单击操作按钮,它将显示以下错误消息UI.exe:用户错误( gtk\Graphics\UI\G的do表达式中的模式匹配失败)
当我从ComboBox中选择一个选项时,是否需要为要执行的操作设置单独的函数?请救救我!
发布于 2012-12-09 23:13:38
正如Gtk2Hs文档中所述,comboBoxGetActiveText“返回comboBox中当前活动的字符串,如果没有选择,则返回空字符串。请注意,您只能在用comboBoxNewText构造的组合框中使用该函数。”
如果要使用此函数,请尝试下列选项之一:
comboBox <- xmlGetWidget xml castToComboBox "combobox1"行之后添加行comboBoxSetModelText comboBox。这可能是正确的,因为comboBoxNewText“在创建新的组合框后内部调用comboBoxSetModelText”。comboBox <- xmlGetWidget xml castToComboBox "combobox1"替换行comboBox <- comboBoxNewText,然后手动将其打包到程序的主窗口中。请注意,TreeModels可以保存任何类型的数据。由于Haskell以不同于命令式语言(如C或Python )的方式处理数据,用Glade创建的树模型不能导入到Haskell应用程序中:您必须在Haskell程序中定义它们。
发布于 2013-02-20 11:47:11
如果您使用comboBoxGetActive函数,它将返回一个Int,然后您可以对comboBox中的每个元素进行映射。这可以在Graphics.UI.Gtk.MenuComboToolbar.ComboBox API中找到。
https://stackoverflow.com/questions/11990554
复制相似问题