显然,我缺少对Go或Wx小部件的一些基本理解。
我正在尝试创建一个非常基本的表,其中包含第一列中的复选框。
table := wx.NewGrid(w, wx.ID_ANY)
table.CreateGrid(4, 2)
table.SetCellEditor(0, 0, wx.SwigIsGridCellBoolRenderer{})该代码给出了以下错误:
invalid type for composite literal: wx.SwigIsGridCellBoolRenderer我知道我还得设置编辑。但我还没走那么远。答案越详细越好。谢谢!
发布于 2018-05-10 14:54:31
错误提示您使用的是复合文字,它可以用于创建struts、片、数组、映射或派生项的值。
这是:
wx.SwigIsGridCellBoolRenderer{}将是类型为wx.SwigIsGridCellBoolRenderer的空复合文本,但该类型与您可能与复合文本一起使用的类型的下一个类型。它是一种接口类型:
type SwigIsGridCellBoolRenderer interface {
SwigGetGridCellBoolRenderer() GridCellBoolRenderer
}wx.NewGrid()返回一种类型的wx.Grid,它是一个具有方法的接口:
SetCellEditor(arg2 int, arg3 int, arg4 SwigIsGridCellEditor)因此,您必须向它传递一个满足/实现wx.SwigIsGridCellEditor接口的值。
这个接口只有一个方法:
type SwigIsGridCellEditor interface {
SwigGetGridCellEditor() GridCellEditor
}因此,任何具有这样的SwigGetGridCellEditor()方法的类型都可以在这里使用。这类类型是:
wx.SwigClassGridCellTextEditorwx.SwigClassGridCellAutoWrapStringEditorwx.SwigClassGridCellBoolEditorwx.SwigClassGridCellChoiceEditorwx.SwigClassGridCellEnumEditor因此,创建上述一个实例,您可以传递给table.SetCellEditor()。
例如:
editor := wx.NewGridCellTextEditor()
table.SetCellEditor(0, 0, editor)https://stackoverflow.com/questions/50192405
复制相似问题