WxGo网格单元格渲染器

时间:2018-05-05 17:49:44

标签: go wxwidgets wxgo

我显然缺少对Go或Wx Widgets的基本了解。

我正在尝试在第一列中创建一个带有复选框的非常基本的表。

table := wx.NewGrid(w, wx.ID_ANY)
table.CreateGrid(4, 2)
table.SetCellEditor(0, 0, wx.SwigIsGridCellBoolRenderer{})

该代码给了我这个错误:

invalid type for composite literal: wx.SwigIsGridCellBoolRenderer

我知道我也必须设置编辑器。但我甚至不是那么远。答案越详细越好。谢谢!

1 个答案:

答案 0 :(得分:2)

错误提示您正在使用composite literal,它可用于创建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.SwigClassGridCellTextEditor
  • wx.SwigClassGridCellAutoWrapStringEditor
  • wx.SwigClassGridCellBoolEditor
  • wx.SwigClassGridCellChoiceEditor
  • wx.SwigClassGridCellEnumEditor

因此,请创建上述其中一项的实例,您可以将其传递给table.SetCellEditor()

例如:

editor := wx.NewGridCellTextEditor()
table.SetCellEditor(0, 0, editor)