Сетка для wx.TreeListCtrl не работает в версии Phoenix - PullRequest
0 голосов
/ 12 октября 2018

Я написал свою программу на 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()
...