首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ComboBox in gtk2hs

ComboBox in gtk2hs
EN

Stack Overflow用户
提问于 2012-08-16 15:25:48
回答 2查看 377关注 0票数 1

我已经使用glade创建了窗口、ComboBox、按钮和代码如下:

代码语言:javascript
复制
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中选择一个选项时,是否需要为要执行的操作设置单独的函数?请救救我!

EN

回答 2

Stack Overflow用户

发布于 2012-12-09 23:13:38

正如Gtk2Hs文档中所述,comboBoxGetActiveText“返回comboBox中当前活动的字符串,如果没有选择,则返回空字符串。请注意,您只能在用comboBoxNewText构造的组合框中使用该函数。”

如果要使用此函数,请尝试下列选项之一:

  • 不要在Glade文件中设置组合框的TreeModel (可能是ListStore),并在comboBox <- xmlGetWidget xml castToComboBox "combobox1"行之后添加行comboBoxSetModelText comboBox。这可能是正确的,因为comboBoxNewText“在创建新的组合框后内部调用comboBoxSetModelText”。
  • 从Glade文件中删除组合框小部件,自己创建它(用comboBox <- xmlGetWidget xml castToComboBox "combobox1"替换行comboBox <- comboBoxNewText,然后手动将其打包到程序的主窗口中。

请注意,TreeModels可以保存任何类型的数据。由于Haskell以不同于命令式语言(如C或Python )的方式处理数据,用Glade创建的树模型不能导入到Haskell应用程序中:您必须在Haskell程序中定义它们。

票数 0
EN

Stack Overflow用户

发布于 2013-02-20 11:47:11

如果您使用comboBoxGetActive函数,它将返回一个Int,然后您可以对comboBox中的每个元素进行映射。这可以在Graphics.UI.Gtk.MenuComboToolbar.ComboBox API中找到。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11990554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档