Как добавить новые строки в сетку wxpython, когда вертикальный индикатор выполнения прокручивается до конца сеткиPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как добавить новые строки в сетку wxpython, когда вертикальный индикатор выполнения прокручивается до конца сетки

Сообщение Anonymous »

При запуске программы я хочу загрузить Wx.Grid с 5 столбцами и 1000 строками.
И я хочу снова добавить 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»