我想使用ListBox
并向其中动态添加行。我想要几种类型的行,每种类型都有自己的组件和布局,并且在运行时,当我需要添加一行时,我想采用这些行模板之一,从中创建一个新的ListBoxRow
,在需要填充数据的地方填写数据,然后将其添加到ListBox
。
我可以在代码中手动完成操作,但是我想使用Glade设计这些行。问题是:
ListBoxRow
内添加ListBox
。ListBox
的一部分,而不是我可以克隆的外部行。使用Google搜索来寻找答案,things like this固守在TreeView
上并为其设置模型,但是我需要ListBox
,因为我需要自由定制的行。
我考虑过将行节点提取到单独的XML中,并且每次使用新的构建器从该新XML重新创建新行并填充数据。可以,但是感觉很笨拙,不能表现得太好-必须有更好的方法!
有官方的方法吗?
答案 0 :(得分:1)
您的问题实际上是多方面的,所以去吧。
通过添加一行,然后将其拖放到ListBoxRow
之外,可以在Listbox
之外添加ListBox
。这样,您可以使用以下方式将行(稍后显示)添加到Listbox
中:
listbox = self.builder.get_object("listbox")
row = self.builder.get_object("row")
listbox.insert(row, 0)
2。无法克隆或复制Glade小部件。有关更多详细信息,请参见此post。
3。如果小部件和ListBoxRow
恰好是静态的,则可能需要考虑在代码中生成它们。对于定期在Glade文件中更新的窗口小部件,这将无法正常工作。