Grid WxPython:如何获得wx网格中显示的单元格范围?

Grid WxPython:如何获得wx网格中显示的单元格范围?,grid,wxpython,wxwidgets,Grid,Wxpython,Wxwidgets,我试图获取网格上可见行/列的范围。网格可以滚动,我想要屏幕上显示的第一行和最后一行。如果该函数可以对列执行相同的操作,那么它将是一个加号 现在我想到了这个解决方案: def GetVisibleRowsRange(self): """ return the row number of the first and last visible rows """ r = 0; max = self.GetNumberRows() while r <

我试图获取网格上可见行/列的范围。网格可以滚动,我想要屏幕上显示的第一行和最后一行。如果该函数可以对列执行相同的操作,那么它将是一个加号

现在我想到了这个解决方案:

def GetVisibleRowsRange(self):
    """
    return the row number of the first and last visible rows
    """
    r = 0;
    max = self.GetNumberRows()
    while r < max and not self.IsVisible(row=r, col=0, wholeCellVisible=False):
        r += 1
    firstRow = r    
    while r < max and self.IsVisible(row=r, col=0, wholeCellVisible=False):
        r += 1
    lastRow = r
    return firstRow, lastRow
def GetVisibleRowsRange(自):
"""
返回第一行和最后一行的行号
"""
r=0;
max=self.GetNumberRows()
当r
这仅在第一列可见时有效


我想知道是否可以通过使用windows虚拟大小函数直接获得可见行/列的范围?

我使用的是wxPerl,下面的python代码未经测试。 此方法有效,但您可能需要“”


谢谢,山姆,它工作效率更高。我在最后两次调用中添加了True作为'clipToMinMax'参数,以使其正常工作。
ux, uy = self.GetScrollPixelsPerUnit()
sx, sy = self.GetViewStart()
w, h = self.GetGridWindow().GetClientSize().Get()
sx *= ux ; sy *= uy

x0 = self.XToCol(sx)
y0 = self.YToRow(sy)
x1 = self.XToCol(sx + w, True)
y1 = self.YToRow(sy + h, True)