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

时间:2014-03-06 20:31:22

标签: grid wxpython wxwidgets

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

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

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

仅当第一列可见时才有效。

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

1 个答案:

答案 0 :(得分:2)

我使用wxPerl,以下python代码未经测试。 此方法有效,但您可能需要&#34; get a little creative using unbound methods&#34;。

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)