И я хочу снова добавить 1000 строк, когда вертикальная полоса прокрутки wx.grid прокручивается до конца сетки .
Итак, я пытаюсь перехватить событие вертикальной полосы прокрутки wx.grid при достижении конца сетки и вызвать функцию добавления строк.Но ни одно из событий полосы прокрутки у меня не работает!
Версии, которые я использую:
- Windows V20H2
- Python 3.10.8
- WxPython 4.2.0
Для пустой сетки с 5 столбцами и 1000 строками я пытаюсь добавить еще 1000 пустых строк при полосе прокрутки достигает конца сетки.
import wx
import wx.grid
class MyForm(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, parent=None, title="To Append Rows")
panel = wx.Panel(self)
global myGrid
myGrid = wx.grid.Grid(panel)
myGrid.CreateGrid(1000, 5)
myGrid.SetColLabelValue(0, "Column1")
myGrid.SetColLabelValue(1, "Column2")
myGrid.SetColLabelValue(2, "Column3")
myGrid.SetColLabelValue(3, "Column4")
myGrid.SetColLabelValue(4, "Column5")
myGrid.SetDefaultColSize(width=500, resizeExistingCols=True)
myGrid.SetDefaultRowSize(height=30, resizeExistingRows=True)
# None the below events work to catch a scroll bar event and trigger append rows.
myGrid.Bind(wx.EVT_SCROLL_BOTTOM, self.AddRows)
myGrid.Bind(wx.EVT_SCROLL_ENDSCROLL, self.AddRows)
myGrid.Bind(wx.EVT_SCROLL, self.AddRows)
myGrid.Bind(wx.EVT_SCROLLBAR, self.AddRows)
myGrid.Bind(wx.EVT_SCROLL_PAGEDOWN, self.AddRows)
myGrid.Bind(wx.EVT_SCROLLWIN_BOTTOM, self.AddRows)
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(myGrid, 1, wx.EXPAND)
panel.SetSizerAndFit(sizer)
self.Maximize()
def AddRows(self, event):
print(event.GetEventObject())
myGrid.AppendRows(1000, True)
if __name__ == "__main__":
app = wx.App(False)
frame = MyForm().Show()
app.MainLoop()
Подробнее здесь: https://stackoverflow.com/questions/753 ... crolled-to