gtk2hs 小部件列表
list of gtk2hs widgets
如何创建一个接受某些类型类的不同实例的列表(或其他任何东西。虽然不是元组)?
具体来说,我想做如下事情:
[labelNew (Just "foo"), buttonNewWithLabel "bar"]
我不关心语法糖,我只想将小部件列表传递给一个函数,该函数会将它们传递给另一个接受任何小部件的函数。
现在的目的只是为了消除线路噪音,就像那样
boxPackStart box content1 PackNatural 0
boxPackStart box content2 PackNatural 0
...
boxPackStart box content100 PackNatural 0
应该是例如
box <- col PackNatural [content1, content2, ..., content100]
我发现有些页面提到了一些动态列表,但当它说 "not typesafe"
时就停止阅读了
对于具体的小部件,您可以使用
toWidget :: WidgetClass o => o -> Widget
安全地将标签和按钮上传到小部件,如:
do
label <- labelNew (Just "foo")
button <- buttonNewWithLabel "bar"
col PackNatural [toWidget label, toWidget button]
其他gtk2hs 类有类似的转换功能;通常在该包集合中,to*
是安全的向上转换而 castTo*
是不安全的向下转换。
如何创建一个接受某些类型类的不同实例的列表(或其他任何东西。虽然不是元组)? 具体来说,我想做如下事情:
[labelNew (Just "foo"), buttonNewWithLabel "bar"]
我不关心语法糖,我只想将小部件列表传递给一个函数,该函数会将它们传递给另一个接受任何小部件的函数。
现在的目的只是为了消除线路噪音,就像那样
boxPackStart box content1 PackNatural 0
boxPackStart box content2 PackNatural 0
...
boxPackStart box content100 PackNatural 0
应该是例如
box <- col PackNatural [content1, content2, ..., content100]
我发现有些页面提到了一些动态列表,但当它说 "not typesafe"
时就停止阅读了对于具体的小部件,您可以使用
toWidget :: WidgetClass o => o -> Widget
安全地将标签和按钮上传到小部件,如:
do
label <- labelNew (Just "foo")
button <- buttonNewWithLabel "bar"
col PackNatural [toWidget label, toWidget button]
其他gtk2hs 类有类似的转换功能;通常在该包集合中,to*
是安全的向上转换而 castTo*
是不安全的向下转换。