Сетка появляется на долю секунды, а затем сразу исчезает - PullRequest
0 голосов
/ 31 мая 2019

Я делаю небольшой проект с wxpython и у меня возникают проблемы с wx.grid.Grid.Сетка вложена в сортировщик, который вложен в другой классификатор ( вот фотография ).Однако, когда это так, сетка появляется на долю секунды и исчезает.Он не исчезал, когда он был только внутри одного классификатора.

Я пытался изменить тип классификатора и различные свойства классификатора и сетки безрезультатно.Я также пытался изменить части кода, но понял, что он не имеет к этому никакого отношения, поскольку сетка даже не отображается внутри wxGlade.

Вот часть .py, сгенерированная wxGlade:

class frameRozvrh(wx.Frame):
    def __init__(self, *args, **kwds):
        # begin wxGlade: frameRozvrh.__init__
        kwds["style"] = kwds.get("style", 0) | wx.DEFAULT_FRAME_STYLE
        wx.Frame.__init__(self, *args, **kwds)
        self.SetSize((640, 480))
        self.statusbar = self.CreateStatusBar(1)
        self.buttonPrev = wx.Button(self, wx.ID_ANY, "<<")
        self.dateWeek = wx.adv.DatePickerCtrl(self, wx.ID_ANY, style=wx.adv.DP_DEFAULT)
        self.buttonNext = wx.Button(self, wx.ID_ANY, ">>")
        self.gridRozvrh = wx.grid.Grid(self, wx.ID_ANY, size=(1, 1))

        self.__set_properties()
        self.__do_layout()
        # end wxGlade

    def __set_properties(self):
        # begin wxGlade: frameRozvrh.__set_properties
        self.SetTitle("Rozvrh hodin")
        self.statusbar.SetStatusWidths([-1])

        # statusbar fields
        statusbar_fields = [u"Aktuální týden"]
        for i in range(len(statusbar_fields)):
            self.statusbar.SetStatusText(statusbar_fields[i], i)
        self.dateWeek.Enable(False)
        self.gridRozvrh.CreateGrid(0, 0)
        self.gridRozvrh.EnableEditing(0)
        self.gridRozvrh.EnableDragColSize(0)
        self.gridRozvrh.EnableDragRowSize(0)
        self.gridRozvrh.EnableDragGridSize(0)
        self.gridRozvrh.SetFocus()
        # end wxGlade

    def __do_layout(self):
        # begin wxGlade: frameRozvrh.__do_layout
        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer_2 = wx.BoxSizer(wx.VERTICAL)
        sizer_1 = wx.GridBagSizer(0, 0)
        sizer_1.Add(self.buttonPrev, (0, 0), (1, 1), wx.ALIGN_CENTER | wx.ALL | wx.EXPAND, 5)
        sizer_1.Add(self.dateWeek, (0, 1), (1, 1), wx.ALIGN_CENTER | wx.ALL | wx.EXPAND, 5)
        sizer_1.Add(self.buttonNext, (0, 2), (1, 1), wx.ALIGN_CENTER | wx.ALL | wx.EXPAND, 5)
        sizer_1.AddGrowableCol(0)
        sizer_1.AddGrowableCol(1)
        sizer_1.AddGrowableCol(2)
        sizer.Add(sizer_1, 0, wx.ALIGN_CENTER | wx.ALL | wx.EXPAND, 10)
        sizer_2.Add(self.gridRozvrh, 0, wx.ALL | wx.EXPAND, 5)
        sizer.Add(sizer_2, 0, wx.ALIGN_CENTER | wx.ALL | wx.EXPAND, 10)
        self.SetSizer(sizer)
        self.Layout()

Я бы хотел, чтобы сетка оставалась видимой, а не исчезала.

1 Ответ

2 голосов
/ 31 мая 2019

В вашем коде две проблемы

Проблема 1 в этой строке:

self.gridRozvrh = wx.grid.Grid(self, wx.ID_ANY, size=(1, 1))

С этой линией вы создаете сетку шириной 1 пиксель и высотой 1 пиксель. Измените его на:

self.gridRozvrh = wx.grid.Grid(self, wx.ID_ANY, size=(100, 100))

или любой другой размер.

Проблема 2 в этой строке:

self.gridRozvrh.CreateGrid(0, 0)

С помощью этой линии вы создаете сетку с 0 строками и 0 столбцами. Измените это на:

self.gridRozvrh.CreateGrid(10, 10)

или любые другие числа по мере необходимости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...