WxGo Grid Cell рендерер - PullRequest
       17

WxGo Grid Cell рендерер

0 голосов
/ 05 мая 2018

Мне явно не хватает базовых знаний о виджетах 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

Я знаю, что мне также нужно установить редактор. Но я даже не так далеко. Чем более подробный ответ, тем лучше. Спасибо!

1 Ответ

0 голосов
/ 10 мая 2018

Ошибка указывает на то, что вы используете составной литерал , который можно использовать для создания значений структур, срезов, массивов, карт или их производных.

Это:

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)
...