Я написал свою программу на wxpython classic, в которой я использовал wx.gizmos.TreeListCtrl.Теперь, когда wxpython изменен на версию Phoenix, я все еще могу использовать wx.gizmos.TreeListCtrl, однако линии сетки для разделения столбцов и элементов больше не отображаются.стиль, который я использовал - wx.TR_DEFAULT_STYLE | wx.TR_HAS_BUTTONS | wx.TR_TWIST_BUTTONS | wx.TR_ROW_LINES | wx.TR_FULL_ROW_HIGHLIGHT
.Я больше не могу использовать wx.TR_COLUMN_LINES
в Фениксе.Но стиль wx.TR_ROW_LINES
не дает мне горизонтальных линий для разделения между элементами, как я ожидал.
Как я могу добавить линии сетки к wx.gizmos.TreeListCtrl, как я делал это раньше в классическом wxpython,Если вы можете предложить замену, мне нужен treelistctrl, у которого есть линии сетки, и я могу изменить цвет для текста элементов.Ниже приведен фрагмент кода, который я упрощаю из кода, полученного из Интернета, чтобы вам было проще его протестировать.Вы можете написать его как на классическом, так и на Phoenix wxpyhon.Спасибо.
import wx
import wx.gizmos as gizmos
class TestPanel(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent, -1)
self.Bind(wx.EVT_SIZE, self.OnSize)
self.tree = gizmos.TreeListCtrl(self, -1, style =
wx.TR_DEFAULT_STYLE
| wx.TR_HAS_BUTTONS
#| wx.TR_TWIST_BUTTONS
| wx.TR_ROW_LINES
#| wx.TR_LINES_AT_ROOT
#| wx.TR_COLUMN_LINES
#| wx.TR_NO_LINES
| wx.TR_FULL_ROW_HIGHLIGHT
)
self.tree.SetBackgroundColour(wx.WHITE)
self.tree.AddColumn("Main column")
self.tree.AddColumn("Column 1")
self.tree.AddColumn("Column 2")
self.tree.SetMainColumn(0)
self.tree.SetColumnWidth(0, 175)
self.root = self.tree.AddRoot("Root")
self.tree.SetItemText(self.root, "col 1 root", 1)
self.tree.SetItemText(self.root, "col 2 root", 2)
for x in range(3):
txt = "Item %d" % x
child = self.tree.AppendItem(self.root, txt)
self.tree.SetItemText(child, txt + "(c1)", 1)
self.tree.SetItemText(child, txt + "(c2)", 2)
for y in range(2):
txt = "item %d-%s" % (x, chr(ord("a")+y))
last = self.tree.AppendItem(child, txt)
self.tree.SetItemText(last, txt + "(c1)", 1)
self.tree.SetItemText(last, txt + "(c2)", 2)
self.tree.Expand(self.root)
def OnSize(self, evt):
self.tree.SetSize(self.GetSize())
class Test(wx.Frame):
def __init__(self, parent):
wx.Frame.__init__(self, parent, -1, '', size=(500, 500))
panel = TestPanel(self)
self.Centre()
self.Show(True)
if __name__ == "__main__":
app = wx.App()
Test(None)
app.MainLoop()